Я написал скрипт, который поможет мне автоматизировать создание новых микро-сервисов.Он работает, принимая URI хранилища битовых ящиков и учетные данные AWS.Он клонирует репозиторий, добавляет файл bitbucket-pipelines.yml.Создает новую лямбда-функцию, вызывая CLI и используя шаблон zip в качестве базового кода.Он также устанавливает лямбда-обработчик на main.lambda_handler
.Затем он добавляет необходимые переменные репозитория в bitbucket и фиксирует файлы проекта.Затем конвейер запускается и обновляет код в лямбде.Все выглядит нормально, пока я не попробую запустить Lambda.
Вот файл bitbucket-pipelines.yml
image: peteremil/zipaws
pipelines:
default:
- step:
name: Deploy code to S3
deployment: staging
script:
- mkdir packages
- pip install -r requirements.txt --target=packages
- chmod 777 -R *
- zip -r $semver.zip .
- aws s3 cp $semver.zip s3://{code_s3_bucket}/$staging_location/
- aws lambda update-function-code --region $aws_region --function-name {function_name}-function --s3-bucket {code_s3_bucket} --s3-key $staging_location/$semver.zip
Вот файл main.py
import json
import os
import sys
import requests
packages_path = os.path.join(os.path.split(__file__)[0], "packages")
sys.path.append(packages_path)
def main(local_id):
return {
"success" : local_id
}
def lambda_handler(event, context):
local_id = event["queryStringParameters"]["local_id"]
response = main(local_id)
return {
"statusCode": 200,
"headers": {"content-type": "application/json"},
"body": json.dumps(response)
}
if __name__ == '__main__':
local_id = sys.argv[-1]
response = main(local_id)
print(response)
Я создал следующее тестовое событие
{
"queryStringParameters": {
"local_id": "00000000"
}
}
Ожидаемый результат от созданного мною события должен быть
{
"statusCode": 200,
"headers" : {"content-type": "application/json"},
"body" : {
{
"success" : "00000000"
}
}
, но вместо этого лямбда не выполнится и выдаст мне
{
"errorMessage": "Unable to import module 'main'"
}
Я попытался переименовать обработчик, получить настройки другой работающей лямбды (которая была создана вручную из консоли) и посмотреть, есть ли различия, но я всегда получаю ту же ошибку.Файл main.py хорошо отображается в редакторе встроенного кода.
Обновление 1 Я добавил строку import requests
в main.py, поскольку выясняется, что это вызывает проблему.,Я думал, что это безвредно, поэтому я не включил его в исходное тело вопроса.