本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS Lambda 部署動作參考
您可以使用 AWS Lambda 部署動作來管理無伺服器部署的應用程式程式碼。您可以部署 函數,並使用流量部署的部署策略,如下所示:
-
流量轉移的 Canary 和線性部署
-
一次全部部署
注意
只有 V2 類型管道才支援此動作。
動作類型
-
類別:
Deploy
-
擁有者:
AWS
-
提供者:
Lambda
-
版本:
1
組態參數
- FunctionName
-
必要:是
您在 Lambda 中建立的函數名稱,例如
MyLambdaFunction
。您必須已建立版本。
- FunctionAlias
-
必要:否
您在 Lambda 中建立的函數別名,以及要部署到的函數,例如
live
。別名必須存在,並在動作執行開始時有一個版本。(這會是復原目標版本。)如果未提供,動作會將來源成品部署到
$LATEST
並建立新的版本。在此使用案例中,部署策略和目標版本選項不可用。 - PublishedTargetVersion
-
必要:否
要部署到 FunctionAlias 的所需 Lambda 函數版本。它可以是管道或動作層級變數,例如
#{variables.lambdaTargetVersion}
。版本必須在動作執行開始時發佈。如果未提供輸入成品,則為必要項。
- DeployStrategy
-
必要:否 (預設為
AllAtOnce
)決定 Lambda 部署動作用來將流量從 Lambda 函數的原始版本轉移到 FunctionAlias 新版本的速率。可用的部署策略為 Canary 或線性。接受的格式:
-
AllAtOnce
-將所有流量一次轉移到更新的 Lambda 函數。
如果未指定,則預設值為
AllAtOnce
) -
Canary10Percent5Minutes
- 在第一個增量中轉移 10% 的流量。剩餘的 90% 會在五分鐘之後部署。您可以變更百分比和分鐘的值。
-
Linear10PercentEvery1Minute
- 每分鐘轉移 10% 的流量,直到轉移所有流量為止。您可以變更百分比和分鐘的值。
此欄位適用下列考量事項:
-
等待時間上限為 2 天。
-
只有在提供 FunctionAlias 時才可用。
-
- 警示
-
必要:否
針對 Lambda 部署設定的警示名稱逗號分隔清單。最多可新增 10 則警示。當監控的警示進入 ALARM 狀態時,動作會失敗。
下圖顯示 動作的編輯頁面範例。

Input artifacts (輸入成品)
-
成品數量:
1
-
描述:如果有提供的檔案,以支援部署期間的指令碼動作。
輸出成品
-
成品數量:
0
-
描述:輸出成品不適用於此動作類型。
輸出變數
設定時,此動作會產生變數,供管道中的下游動作的動作組態所參考。即使此動作沒有命名空間,此動作產生的變數仍可視為輸出變數。您可以設定動作的命名空間,讓這些變數可供下游動作的組態使用。
如需詳細資訊,請參閱變數參考。
- FunctionVersion
-
已部署的新 Lambda 函數版本。
Lambda 部署動作的服務角色政策許可
當 CodePipeline 執行 動作時,CodePipeline 服務角色需要下列許可,並針對具有最低權限的存取適當縮小範圍。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "StatementForLambda", "Effect": "Allow", "Action": [ "lambda:GetAlias", "lambda:GetFunctionConfiguration", "lambda:GetProvisionedConcurrencyConfig", "lambda:PublishVersion", "lambda:UpdateAlias", "lambda:UpdateFunctionCode" ], "Resource": [ "arn:aws:lambda:aws:{{customerAccountId}}:function:{{FunctionName}}", "arn:aws:lambda:aws:{{customerAccountId}}:function:{{FunctionName}}:*" ] }, { "Sid": "StatementForCloudWatch", "Effect": "Allow", "Action": [ "cloudwatch:DescribeAlarms" ], "Resource": [ "arn:aws:cloudwatch:aws:{{customerAccountId}}:alarm:{{AlarmNames}}" ] }, { "Sid": "StatementForLogs1", "Effect": "Allow", "Action": [ "logs:CreateLogGroup" ], "Resource": [ "arn:aws:logs:aws:{{customerAccountId}}:log-group:/aws/codepipeline/{{pipelineName}}", "arn:aws:logs:aws:{{customerAccountId}}:log-group:/aws/codepipeline/{{pipelineName}}:*" ] }, { "Sid": "StatementForLogs2", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:aws:{{customerAccountId}}:log-group:/aws/codepipeline/{{pipelineName}}:log-stream:*" ] } ] }
動作宣告
另請參閱
以下相關資源可協助您使用此動作。
-
教學課程:使用 CodePipeline 進行 Lambda 函數部署 – 本教學課程會逐步引導您建立範例 Lambda 函數,您將在其中建立別名和版本、將壓縮的 Lambda 函數新增至來源位置,以及在管道中執行 Lambda 動作。