AWS Lambda 叫用動作參考 - AWS CodePipeline

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS Lambda 叫用動作參考

可讓您在管道中執行 Lambda 函數作為動作。使用事件物件作為此函數的輸入,函數具有存取動作組態、輸入成品位置、輸出成品位置,以及其他存取成品所需的資訊。如需傳遞至 Lambda 調用函數的範例事件,請參閱 範例JSON事件。Lambda 函數實作時,必須呼叫 PutJobSuccessResult APIPutJobFailureResult API。否則,執行此動作會停止回應,直到動作逾時為止。如果您指定動作的輸出成品,則必須將它們上傳到 S3 儲存貯體,做為函數實作的一部分。

重要

請勿記錄 CodePipeline 傳送至 Lambda JSON的事件,因為這可能會導致使用者登入 CloudWatch 日誌。 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,請參閱 變數參考

動作組態範例

YAML
Name: Lambda Actions: - Name: Lambda ActionTypeId: Category: Invoke Owner: AWS Provider: Lambda Version: '1' RunOrder: 1 Configuration: FunctionName: myLambdaFunction UserParameters: 'http://192.0.2.4' OutputArtifacts: [] InputArtifacts: [] Region: us-west-2
JSON
{ "Name": "Lambda", "Actions": [ { "Name": "Lambda", "ActionTypeId": { "Category": "Invoke", "Owner": "AWS", "Provider": "Lambda", "Version": "1" }, "RunOrder": 1, "Configuration": { "FunctionName": "myLambdaFunction", "UserParameters": "http://192.0.2.4" }, "OutputArtifacts": [], "InputArtifacts": [], "Region": "us-west-2" } ] },

範例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 事件提供 中 Lambda 動作的下列任務詳細資訊 CodePipeline:

  • 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 。

以下相關資源可協助您使用此動作。