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 簡單儲存服務)。如需詳細資訊,請參閱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 簡單儲存服務)。如需詳細資訊,請參閱ArtifactRevision

      • name:成品輸出的名稱,例如 MyApp

    • artifactCredentials:用於存取 Amazon S3 儲存貯體中輸入和輸出成品的工 AWS 作階段登入資料。這些登入資料是 AWS Security Token Service (AWS STS) 發出的臨時登入資料。

      • secretAccessKey:工作階段的私密存取金鑰。

      • sessionToken:工作階段的字符。

      • accessKeyId:工作階段的私密存取金鑰。

    • continuationToken:動作產生的字符。未來動作會使用此字符來識別動作的執行中執行個體。動作完成時,不應提供接續字符。

    • encryptionKey:用於加密人工因素存放區中資料的加密金鑰,例如 AWS KMS 金鑰。如果未定義,則會使用 Amazon 簡單儲存服務的預設金鑰。

      • id:用來識別金鑰的 ID。對於 AWS KMS 金鑰,您可以使用金鑰 ID ARN、金鑰或別名ARN。

      • type:加密金鑰的類型,例如 AWS KMS 。

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