#amazon-web-services #amazon-s3 #aws-lambda #amazon-cloudformation
#amazon-web-services #amazon-s3 #aws-lambda #aws-cloudformation
Вопрос:
Код лямбда-функции (zip-файл) в настоящее время извлекается из моей корзины S3. Однако после того, как я изменил свой код и заменил исходный zip-файл обновленным кодом, а затем запустил update-stack, код лямбда-функции, похоже, не изменился в консоли lambda.
Есть ли какой-нибудь способ заставить его работать?
Мой шаблон json
{
"AWSTemplateFormatVersion": "2010-09-09",
"Parameters": {
"storageS3Bucket": {
"Type": "String",
"Default": "myBucket"
}
},
"Resources": {
"s3BucketImageStorage":{
"Type" : "AWS::S3::Bucket",
"Properties" : {
"BucketName" : {
"Ref": "storageS3Bucket"
}
}
},
"getBannerHandler": {
"Type": "AWS::Lambda::Function",
"Properties": {
"FunctionName": "getBanner",
"Handler": "getBanner.handler",
"Role": {
"Fn::ImportValue": {
"Fn::Sub": "${RolesStack}-LambdaRoleArn"
}
},
"Code": {
"S3Bucket": {
"Ref": "HandlerCodeS3Bucket"
},
"S3Key":"getBanner.zip"
},
"Runtime": "nodejs12.x"
}
}
}
}
Ответ №1:
У вас есть несколько вариантов:
-
Добавьте версию файла или хэш git commit к имени лямбда-zip-файла, поэтому, когда вы выполняете CloudFormation update-stack, вы передаете новое имя zip-файла в качестве параметров.
-
Или используйте awscli для непосредственного обновления лямбда-функции, но лучше сначала удалить zip-файл, а затем загрузить его на случай, если вы хотите использовать то же имя, чтобы избежать возможной согласованности S3 при замене того же файла.
Комментарии:
1. Вместо хэша git commit рассмотрим хэш md5 кода. Таким образом, код будет повторно использоваться только при изменении кода, а не при каждом коммите git.
2. Если вы не используете моно-репозиторий, хэш git также будет меняться только при изменении кода labmda, и его легче получить