如何解决AWS 云形成 |如何配置 Lambda 以使用 S3 存储桶中的最新代码
Tests3bucketLambda:
Type: "AWS::Lambda::Function"
Properties:
Code:
S3Bucket: TestS3Bucket
S3Key: Tests3.zip
FunctionName: "test-lambda-function"
Handler: lambda-function-s3.lambda_handler
Role: !GetAtt LambdaExecutionRole.Arn
Runtime: python3.6
问题:当我在代码构建期间更新压缩并上传到 S3 存储桶的新代码,但更改未部署到现有 lambda 函数时。
解决方法
如果您将新代码部署到具有相同键的对象,CF 不会将其视为更改,因为模板本身没有被修改。缓解这种情况的方法很少。
-
使用存储桶版本控制并提供对象版本和对象键:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-code.html
Code: S3Bucket: TestS3Bucket S3Key: Tests3.zip S3ObjectVersion: blablabla....
-
在每次部署时修改您的对象键,例如时间戳
Code: S3Bucket: TestS3Bucket S3Key: Tests3_2021-05-06T17:15:55+00:00.zip
-
使用 Terraform 或 AWS CDK 等自动化工具来处理这些事情
如果您希望 lambda 自动获取最新代码,那么使用云形成是不可能的。
为此,您可以将代码文件同步到 s3 存储桶,然后尝试此处提到的方法 How can AWS Lambda pick the latest versions of of the script from S3 。我能够实现它并在那里提到了解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。