我想使用 CloudFormation 堆疊部署和更新 Lambda 函式。
我的堆疊創建作業流程是:
- 將我的 Lambda 函式代碼(zip 檔案)上傳到 S3
- 使用 s3 存盤桶(存盤 lambda 函式代碼的位置)和 LambdaFileName(zip 檔案名)作為 CloudFormation 引數,通過部署 CloudFormation 模板來創建 CloudFormation 堆疊
但是,我不知道如何使用模板更新 Lambda 函式。我嘗試將新功能代碼上傳到 S3 并另存為新檔案名。并使用新檔案作為引數來更新堆疊。但由于檔案是 zip 檔案,CloudFormation 無法檢測到任何更改。
我的問題:
- 如何使用 CloudFormation 模板更新 Lambda 函式
- 我應該使用
AWS::Lambda::Function還是AWS::Serverless::Function資源?我想支持版本控制。
謝謝你。
我的 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
Transform: AWS::Serverless-2016-10-31
Resources:
# LambdaFunction:
# DeletionPolicy: "Delete"
# Type: "AWS::Lambda::Function"
# Properties:
# Description: ""
# FunctionName: "LambdaFunction"
# Handler: "lambda_function.lambda_handler"
# Code:
# S3Bucket: !Ref LambdaS3
# S3Key: !Sub '${Lambdafilename}.zip'
# MemorySize: 512
# Role: !GetAtt IAMRole2.Arn
# Runtime: "python3.8"
# Timeout: 20
# TracingConfig:
# Mode: "PassThrough"
LambdaFunction:
DeletionPolicy: "Delete"
Type: "AWS::Serverless::Function"
Properties:
Description: ""
FunctionName: "LambdaFunction"
Handler: "lambda_function.lambda_handler"
CodeUri:
Bucket: !Ref LambdaS3
Key: !Sub '${Lambdafilename}.zip'
MemorySize: 512
Role: !GetAtt IAMRole2.Arn
Runtime: "python3.8"
Timeout: 20
Tracing: "PassThrough"
AutoPublishAlias: live
DeploymentPreference:
Type: Linear10PercentEvery10Minutes
uj5u.com熱心網友回復:
CodeUri需要版本。因此,如果您的存盤桶是版本,則對其物件的任何更改,即使名稱相同,也會導致版本不同。因此,一旦您將新版本指定為引數,您的函式就會得到更新。
uj5u.com熱心網友回復:
在堆疊更新期間不會自動檢測對 Amazon S3 中部署包的更改。要更新功能代碼,請更改模板中的物件鍵或版本。
不幸的是,除非您在每次更新時更改“AWS::Lambda::Function”資源上的“S3Key”,否則 CloudFormation 不會將其視為更改
來源
當您應用 CloudFormation 堆疊更新時,它會檢查任何已部署資源的屬性是否有更新。當 Lambda 資源屬性(如記憶體、超時、環境變數等)發生更新時,沒有問題,因為 CloudFormation 會選擇這些更改并相應地更新。
當對 Lambda 函式代碼或其任何依賴項進行更新時,就會出現問題。由于這些不是資源屬性更新,因此 CloudFormation 無法知道是否發生更改并更新受影響的組件。
當對 Lambda 函式代碼或其任何依賴項進行更新時,就會出現問題。由于這些不是資源屬性更新,因此 CloudFormation 無法知道是否發生更改并更新受影響的組件。
請參考以下博文
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/400797.html
標籤:亚马逊网络服务 亚马逊-s3 拉姆达 aws-lambda 亚马逊云形成
