翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ステップ 3: ライフサイクルフック Lambda 関数を作成する
このセクションでは、Amazon ECSデプロイのAfterAllowTestTraffic
フックに 1 つの Lambda 関数を実装します。Lambda 関数は、更新された Amazon ECSアプリケーションをインストールする前に検証テストを実行します。このチュートリアルでは、Lambda 関数は Succeeded
を返します。実際のデプロイ中、検証テストの結果に応じて、検証テストは Succeeded
または Failed
を返します。また、実際のデプロイ中に、1 つ以上の他の Amazon ECSデプロイライフサイクルイベントフック (BeforeInstall
、、BeforeAllowTraffic
、) AfterInstall
に Lambda テスト関数を実装することもできますAfterAllowTraffic
。詳細については、「Amazon ECSデプロイのライフサイクルイベントフックのリスト」を参照してください。
Lambda 関数を作成するには、IAMロールが必要です。このロールは、 CloudWatch ログに書き込んで CodeDeploy ライフサイクルフックのステータスを設定するアクセス許可を Lambda 関数に付与します。
IAM ロールを作成するには
-
でIAMコンソールを開きますhttps://console.aws.amazon.com/iam/
。 -
ナビゲーションペインで [ロール] を選択し、[ロールを作成] を選択します。
-
次のプロパティでロールを作成します。
-
信頼されたエンティティ]: AWS Lambda。
-
アクセス許可: AWSLambdaBasicExecutionRole。これにより、Lambda 関数に CloudWatch ログに書き込むアクセス許可が付与されます。
-
ロール名]:
lambda-cli-hook-role
。
詳細については、AWS Lambda 「実行ロールの作成」を参照してください。
-
-
作成したロールにアクセス許可
codedeploy:PutLifecycleEventHookExecutionStatus
をアタッチします。これにより、デプロイ中に CodeDeploy ライフサイクルフックのステータスを設定するアクセス許可が Lambda 関数に付与されます。詳細については、AWS Identity and Access Management 「 ユーザーガイド」およびCodeDeploy API「 リファレンスPutLifecycleEventHookExecutionStatus」のIAM「ID アクセス許可の追加」を参照してください。
AfterAllowTestTraffic
のフック Lambda 関数を作成するには
-
次の内容で、
AfterAllowTestTraffic.js
という名前のファイルを作成します。'use strict'; const AWS = require('aws-sdk'); const codedeploy = new AWS.CodeDeploy({apiVersion: '2014-10-06'}); exports.handler = (event, context, callback) => { console.log("Entering AfterAllowTestTraffic hook."); // Read the DeploymentId and LifecycleEventHookExecutionId from the event payload var deploymentId = event.DeploymentId; var lifecycleEventHookExecutionId = event.LifecycleEventHookExecutionId; var validationTestResult = "Failed"; // Perform AfterAllowTestTraffic validation tests here. Set the test result // to "Succeeded" for this tutorial. console.log("This is where AfterAllowTestTraffic validation tests happen.") validationTestResult = "Succeeded"; // Complete the AfterAllowTestTraffic hook by sending CodeDeploy the validation status var params = { deploymentId: deploymentId, lifecycleEventHookExecutionId: lifecycleEventHookExecutionId, status: validationTestResult // status can be 'Succeeded' or 'Failed' }; // Pass CodeDeploy the prepared validation test results. codedeploy.putLifecycleEventHookExecutionStatus(params, function(err, data) { if (err) { // Validation failed. console.log('AfterAllowTestTraffic validation tests failed'); console.log(err, err.stack); callback("CodeDeploy Status update failed"); } else { // Validation succeeded. console.log("AfterAllowTestTraffic validation tests succeeded"); callback(null, "AfterAllowTestTraffic validation tests succeeded"); } }); }
-
Lambda デプロイパッケージを作成する
zip AfterAllowTestTraffic.zip AfterAllowTestTraffic.js
-
create-function
のコマンドを使用して、AfterAllowTestTraffic
のフックのために Lambda 関数を作成します。aws lambda create-function --function-name AfterAllowTestTraffic \ --zip-file fileb://AfterAllowTestTraffic.zip \ --handler AfterAllowTestTraffic.handler \ --runtime nodejs10.x \ --role arn:aws:iam::
aws-account-id
:role/lambda-cli-hook-role -
create-function
レスポンスARNに Lambda 関数を書き留めます。これは、次のステップで CodeDeploy デプロイの AppSpec ファイルを更新するARNときに使用します。