AWS Lambdaと使用するAWS CodePipeline - AWS Lambda

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Lambdaと使用するAWS CodePipeline

AWS CodePipeline は、 で実行されるアプリケーション用に継続的な配信パイプラインを作成できるサービスです。AWSLambda アプリケーションをデプロイするパイプラインを作成できます。また、パイプラインの実行時にタスクを実行する Lambda 関数を呼び出すようにパイプラインを設定することもできます。Lambda コンソールで Lambda アプリケーションを作成すると、Lambda がソース、構築、デプロイのステージを含むパイプラインを作成します。

CodePipeline は、ジョブの詳細を含むイベントを使用して、関数を非同期的に呼び出します。以下の例では、my-function という名前の関数を呼び出したパイプラインからのイベントを示しています。

例 CodePipeline イベント
{ "CodePipeline.job": { "id": "c0d76431-b0e7-xmpl-97e3-e8ee786eb6f6", "accountId": "123456789012", "data": { "actionConfiguration": { "configuration": { "FunctionName": "my-function", "UserParameters": "{\"KEY\": \"VALUE\"}" } }, "inputArtifacts": [ { "name": "my-pipeline-SourceArtifact", "revision": "e0c7xmpl2308ca3071aa7bab414de234ab52eea", "location": { "type": "S3", "s3Location": { "bucketName": "us-west-2-123456789012-my-pipeline", "objectKey": "my-pipeline/test-api-2/TdOSFRV" } } } ], "outputArtifacts": [ { "name": "invokeOutput", "revision": null, "location": { "type": "S3", "s3Location": { "bucketName": "us-west-2-123456789012-my-pipeline", "objectKey": "my-pipeline/invokeOutp/D0YHsJn" } } } ], "artifactCredentials": { "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "secretAccessKey": "6CGtmAa3lzWtV7a...", "sessionToken": "IQoJb3JpZ2luX2VjEA...", "expirationTime": 1575493418000 } } } }

ジョブを完了するには、関数は CodePipeline API を呼び出して成功または失敗のシグナルを送信する必要があります。以下の Node.js 関数の例では、PutJobSuccessResult オペレーションを使用して成功を通知します。また、イベントオブジェクトから API 呼び出しのジョブ ID を取得します。

例 index.js
var AWS = require('aws-sdk') var codepipeline = new AWS.CodePipeline() exports.handler = async (event) => { console.log(JSON.stringify(event, null, 2)) var jobId = event["CodePipeline.job"].id var params = { jobId: jobId } return codepipeline.putJobSuccessResult(params).promise() }

非同期呼び出しで、関数がエラーを返した場合、Lambda はメッセージをキューに入れ、エラーになった呼び出しを再試行します。関数を設定するには、送信先を使用して、関数が処理できなかったイベントを保持します。

Lambda 関数を呼び出すようにパイプラインを設定する方法のチュートリアルについては、AWS CodePipelineユーザーガイドInvoke an AWS Lambda function in a pipeline を参照してください。

AWS CodePipeline を使用して、Lambda application. CodePipeline combines ソースコントロール、ビルド、デプロイリソースの継続的デリバリーパイプラインを作成し、アプリケーションのソースコードを変更するたびに実行されるパイプラインを作成できます。

AWS Serverless Application Model と を使用してパイプラインを作成する別の方法についてはAWS CloudFormation、「Amazon Web Services YouTube チャネルでのサーバーレスアプリケーションのデプロイの自動化」を参照してください。

アクセス許可

関数を呼び出すには、 CodePipeline パイプラインに次の API オペレーションを使用するアクセス許可が必要です。

デフォルトのパイプラインサービスロールには、これらのアクセス許可が含まれています。

ジョブを完了するには、関数の実行ロールに以下のアクセス許可が必要です。

  • codepipeline:PutJobSuccessResult

  • codepipeline:PutJobFailureResult

これらのアクセス許可は、 AWSCodePipelineCustomActionAccess管理ポリシーに含まれています。