Я прочитал несколько ответов на похожие темы, но не был удовлетворен ни одной из них.
Мы внедряем некоторый код в AWS Lambda с файлом jar, который содержит версию кода, такую как name-of-my-app-14.jar
, 14 - это номер сборки Jenkins.
У меня проблема в том, что у меня нет способа понять, какая версия jar в настоящее время развернута в AWS, и было бы неплохо иметь ее.
Это фрагмент облачной информации, который я должен создать для лямбды:
MyLambdaFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: name-of-my-app.jar
FunctionName: "my-function-name"
Handler: "com.package.something.myapp.HandlerClass::handleRequest"
MemorySize: 256
Role: "arn:aws:iam::1234567890:role/some-role"
Runtime: "java8"
Timeout: 60
Environment:
Variables:
SOME_VARIABLE: "value"
Для развертывания мы загружаем jar с версией, которую мы хотим развернуть, из нашего хранилища артефактов, сохраняя ее, как указано в приведенном выше шаблоне, и запускаем:
aws cloudformation package --template-file myapp-stack.yaml --output-template-file tmp.yaml --s3-bucket my.bucket
aws cloudformation deploy --region my-region --template-file tmp.yaml --stack-name prod-myappstackname --capabilities CAPABILITY_IAM --parameter-overrides Environment=prod --no-fail-on-empty-changeset