【发布时间】:2022-01-05 11:19:44
【问题描述】:
我想使用 CloudFormation 模板部署和更新我的 lambda 函数代码。
我的部署工作流程是:
- 将我的 lambda 函数代码压缩到一个名为
Lambda的 zip 文件中 - 启用名为
LambdaS3的 s3 存储桶的 s3 版本控制 - 将 zip 文件上传到名为
LambdaS3的 s3 存储桶中 - 将 CloudFormation 模板
CFtemplate如下上传到 s3bucketLambdaS3 - 通过输入“LambdaS3”作为参数
LambdaS3创建 CloudFormation 堆栈, “Lambda”作为参数Lambdafilename,压缩文件的版本作为参数LambdafileVersion
我的 lambda 代码更新工作流程是:
- 将我更新的 lambda 函数代码压缩到一个名为
Lambda的 zip 文件中 - 将更新后的 zip 文件上传到名为
LambdaS3的 s3 存储桶中 - 通过输入 zip 文件的更新版本作为参数
LambdafileVersion来更新 CloudFormation 堆栈
- 我的预期:部署和更新会成功
- 实际结果:从 AWS 获取消息“创建此更改集时出错 提交的信息不包含更改。提交不同的信息以创建更改集。”在更新堆栈期间,部署成功时。
我的模板如下
AWSTemplateFormatVersion: "2010-09-09"
Metadata: ""
Description: ""
Parameters:
LambdaS3:
Description: Api Gateway Authorizer Lambda S3Bucket Name
Type: String
Lambdafilename:
Description: Api Gateway Authorizer Lambda file Name (Latest)
Type: String
LambdafileVersion:
Description: Lambda zip file version
Type: String
Transform: AWS::Serverless-2016-10-31
Resources:
LambdaFunction:
DeletionPolicy: "Delete"
Type: "AWS::Serverless::Function"
Properties:
Description: ""
FunctionName: "LambdaFunction"
Handler: "lambda_function.lambda_handler"
CodeUri:
Bucket: !Ref LambdaS3
Key: !Sub '${Lambdafilename}.zip'
Version: !Ref LambdafileVersion
MemorySize: 512
Role: !GetAtt IAMRole2.Arn
Runtime: "python3.8"
Timeout: 20
Tracing: "PassThrough"
AutoPublishAlias: live
DeploymentPreference:
Type: Linear10PercentEvery10Minutes
【问题讨论】:
标签: amazon-web-services amazon-s3 aws-lambda amazon-cloudformation