[英]Can I update AWS Lambda function using CloudFormation template?
[英]How do I update AWS Lambda function using CloudFormation template
我想使用 CloudFormation 模板部署和更新我的 lambda function 代碼。
我的部署工作流程是:
Lambda
的 zip 文件中LambdaS3
的 s3 存儲桶的 s3 版本控制LambdaS3
的 s3 存儲桶中CFtemplate
上傳到 s3bucket LambdaS3
LambdaS3
、“Lambda”作為參數Lambdafilename
並將 zip 文件的版本作為參數LambdafileVersion
來創建 CloudFormation 堆棧我的 lambda 代碼更新工作流程是:
Lambda
LambdaS3
的 s3 存儲桶中LambdafileVersion
來更新 CloudFormation 堆棧我的模板如下
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
這不起作用,因為您使用的是 CodeDeploy。 如果您想按照您嘗試的方式更新函數,則必須從代碼中刪除以下內容:
AutoPublishAlias: live
DeploymentPreference:
Type: Linear10PercentEvery10Minutes
跟進:
而不是刪除DeploymentPreference
屬性,添加AutoPublishCodeSha256
是正確的解決方案。
根據 AWS 文檔,
“此屬性解決了當 AWS SAM 模板具有以下特征時出現的問題:DeploymentPreference object 配置為逐步部署(如逐步部署無服務器應用程序中所述),AutoPublishAlias 屬性已設置且不會在部署之間更改,以及CodeUri 屬性已設置並且在部署之間不會更改。”
"This scenario can occur when the deployment package stored in an Amazon Simple Storage Service (Amazon S3) location is replaced by a new deployment package that contains updated Lambda function code, but the CodeUri property remains unchanged (as opposed to the new deployment package being上傳到新的 Amazon S3 位置,並且 CodeUri 被更改到新位置)。”
所描述的場景正是我的情況。 添加AutoPublishCodeSha256
屬性后,可以使用DeploymentPreference
屬性的存在來更新我的堆棧。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.