本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS Lambda 叫用動作參考
可讓您在管道中執行 Lambda 函數作為動作。使用事件物件作為此函數的輸入,函數具有存取動作組態、輸入成品位置、輸出成品位置,以及其他存取成品所需的資訊。如需傳遞至 Lambda 調用函數的範例事件,請參閱 JSON 事件範例。Lambda 函數實作時,必須呼叫 PutJobSuccessResult
API 或 PutJobFailureResult API。否則,執行此動作會停止回應,直到動作逾時為止。如果您指定動作的輸出成品,則必須將它們上傳到 S3 儲存貯體,做為函數實作的一部分。
重要
請勿記錄 CodePipeline 傳送給 Lambda 的 JSON 事件,因為這可能會導致使用者登入資料記錄在 CloudWatch Logs 中。CodePipeline 角色使用 JSON 事件,將臨時登入資料傳遞給 artifactCredentials 欄位中的 Lambda。如需範例事件,請參閱JSON 事件範例。
動作類型
-
類別:
Invoke -
擁有者:
AWS -
提供者:
Lambda -
版本:
1
組態參數
- FunctionName
-
必要:是
FunctionName是 Lambda 中建立的函數名稱。 - UserParameters
-
必要:否
可由 Lambda 函數做為輸入的字串。
Input artifacts (輸入成品)
-
成品數量:
0 to 5 -
描述:要提供給 Lambda 函數的一組成品。
輸出成品
-
成品數量:
0 to 5 -
描述:Lambda 函數輸出產生的成品集。
輸出變數
此動作會以變數的形式產生包含在 PutJobSuccessResult API 請求的 outputVariables區段中的所有鍵值對。
如需 CodePipeline 中變數的詳細資訊,請參閱 變數參考。
動作組態範例
JSON 事件範例
Lambda 動作會傳送 JSON 事件,其中包含任務 ID、管道動作組態、輸入和輸出成品位置,以及成品的任何加密資訊。任務工作者會存取這些詳細資訊,以完成 Lambda 動作。如需詳細資訊,請參閱 任務詳細資訊。以下為範例 事件。
{ "CodePipeline.job": { "id": "11111111-abcd-1111-abcd-111111abcdef", "accountId": "111111111111", "data": { "actionConfiguration": { "configuration": { "FunctionName": "MyLambdaFunction", "UserParameters": "input_parameter" } }, "inputArtifacts": [ { "location": { "s3Location": { "bucketName": "bucket_name", "objectKey": "filename" }, "type": "S3" }, "revision": null, "name": "ArtifactName" } ], "outputArtifacts": [], "artifactCredentials": { "secretAccessKey": "secret_key", "sessionToken": "session_token", "accessKeyId": "access_key_ID" }, "continuationToken": "token_ID", "encryptionKey": { "id": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "type": "KMS" } } } }
JSON 事件提供 CodePipeline 中 Lambda 動作的下列任務詳細資訊:
-
id:唯一系統產生的任務 ID。 -
accountId:與任務相關聯的 AWS 帳戶 ID。 -
data:任務工作者完成任務所需的其他資訊。-
actionConfiguration:Lambda 動作的動作參數。如需定義,請參閱 組態參數 。 -
inputArtifacts:提供給動作的成品。-
location:成品存放區位置。-
s3Location:動作的輸入成品位置資訊。-
bucketName:動作的管道成品存放區名稱 (例如,名為 codepipeline-us-east-2-1234567890 的 Amazon S3 儲存貯體)。 -
objectKey:應用程式的名稱 (例如,CodePipelineDemoApplication.zip)。
-
-
type:位置中成品的類型。目前,S3是唯一有效的成品類型。
-
-
revision:成品的修訂 ID。根據物件的類型,這可以是遞交 ID (GitHub) 或修訂 ID (Amazon Simple Storage Service)。如需詳細資訊,請參閱 ArtifactRevision。 -
name:要處理的成品名稱,例如MyApp。
-
-
outputArtifacts:動作的輸出。-
location:成品存放區位置。-
s3Location:動作的輸出成品位置資訊。-
bucketName:動作的管道成品存放區名稱 (例如,名為 codepipeline-us-east-2-1234567890 的 Amazon S3 儲存貯體)。 -
objectKey:應用程式的名稱 (例如,CodePipelineDemoApplication.zip)。
-
-
type:位置中成品的類型。目前,S3是唯一有效的成品類型。
-
-
revision:成品的修訂 ID。根據物件的類型,這可以是遞交 ID (GitHub) 或修訂 ID (Amazon Simple Storage Service)。如需詳細資訊,請參閱 ArtifactRevision。 -
name:成品輸出的名稱,例如MyApp。
-
-
artifactCredentials:用於存取 Amazon S3 儲存貯體中輸入和輸出成品的 AWS 工作階段登入資料。這些登入資料是 AWS Security Token Service (AWS STS) 發出的臨時登入資料。-
secretAccessKey:工作階段的私密存取金鑰。 -
sessionToken:工作階段的字符。 -
accessKeyId:工作階段的私密存取金鑰。
-
-
continuationToken:動作產生的字符。未來動作會使用此字符來識別動作的執行中執行個體。動作完成時,不應提供接續字符。 -
encryptionKey:用來加密成品存放區中資料的加密金鑰,例如 AWS KMS 金鑰。如果未定義,則會使用 Amazon Simple Storage Service 的預設金鑰。-
id:用來識別金鑰的 ID。如果是 AWS KMS 金鑰,您可以使用金鑰 ID、金鑰 ARN 或別名 ARN。 -
type:加密金鑰的類型,例如 AWS KMS 。
-
-
另請參閱
以下相關資源可協助您使用此動作。
-
AWS CloudFormation 使用者指南 – 如需管道的 Lambda 動作和 CloudFormation 成品的詳細資訊,請參閱搭配 CodePipeline 管道使用參數覆寫函數、自動化部署 Lambda 型應用程式和AWS CloudFormation 成品。
-
在 CodePipeline 的管道中叫用 AWS Lambda 函數 – 此程序提供範例 Lambda 函數,並說明如何使用主控台建立具有 Lambda 調用動作的管道。