Я использую sam cli тоже для сборки и развертывания AWS Lambdas:
Команда sam build выполняет перебор функций в вашем приложении, ищет файл манифеста (например, needs.txt)который содержит зависимости и автоматически создает артефакты развертывания, которые можно развернуть в Lambda с помощью команд sam package и sam deploy.
Что здорово, я могу использовать флаг опции --use-container
для построения функцийкоторые имеют нативно скомпилированные зависимости в ламбда-подобном контейнере AWS.
А как насчет слоев AWS Lambda?
У меня есть функция:
CreateImagesLambdaFunction:
Type: AWS::Serverless::Function
Properties:
Runtime: python3.7
Handler: lambda_function.create
CodeUri: ./functions/image_handler/
...
Layers:
- !Ref LayerPillow
, который использует слой с нативно скомпилированными зависимостями (таким образом, должен быть установлен в linux):
LayerPillow:
Type: AWS::Serverless::LayerVersion
Properties:
...
ContentUri: ./functions/layer_pillow/
Я могу обойти это, просто установив зависимости, используя образ докера amazonlinux:latest
и скопировав в мой репозиторий., но было бы любопытно, если SAM поддерживает эту функцию