チュートリアル 変数の使用 Lambda アクションの呼び出し - AWS CodePipeline

チュートリアル 変数の使用 Lambda アクションの呼び出し

Lambda 呼び出しアクションは、別のアクションからの変数を入力の一部として使用し、その出力と一緒に新しい変数を返すことができます。CodePipeline のアクションの変数については、「Variables」を参照してください。

このチュートリアルを終了すると、以下の項目が使用可能になります。

  • 次の操作を実行する Lambda 呼び出しアクション。

    • CodeCommit ソースアクションからの CommitId 変数を使用する

    • 3つの新しい変数を出力します。dateTimetestRunId、および region

  • Lambda 呼び出しアクションからの新しい変数を使用して、テスト URL とテスト実行 ID を提供する手動承認アクション

  • 新しいアクションを反映して更新されたパイプライン

前提条件

始めるには以下のものが必要です。

ステップ 1. Lambda 関数の作成

次のステップを使用して Lambda 関数と Lambda 実行ロールを作成します。Lambda 関数を作成した後、パイプラインに Lambda アクションを追加します。

Lambda 関数と実行ロールを作成するには

  1. AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/lambda/ にある AWS Lambda コンソールを開きます。

  2. [Create function (関数の選択)] を選択します。[一から作成] が選択された状態のままにしておきます。

  3. 機能名のように、関数の名前を入力します。 myInvokeFunction。 内 ランタイム、デフォルトのオプションが選択されたままにします。

  4. [実行ロールの選択または作成] を選択します。[基本的な Lambda アクセス権限で新しいロールを作成] を選択します。

  5. [Create function (関数の選択)] を選択します。

  6. 別のアクションからの変数を使用するには、Lambda 呼び出しアクションの設定で UserParameters にその変数を渡す必要があります。このチュートリアルで後ほどパイプラインのアクションを設定しますが、ここでは変数を渡したものとしてコードを追加します。

    const commitId = event["CodePipeline.job"].data.actionConfiguration.configuration.UserParameters;

    新しい変数を生成するには、 outputVariables に入力 putJobSuccessResult。 変数は、 putJobFailureResult.

    const successInput = { jobId: jobId, outputVariables: { testRunId: Math.floor(Math.random() * 1000).toString(), dateTime: Date(Date.now()).toString(), region: lambdaRegion } };

    新しい関数で、[コードをインラインで編集] を選択したまま、次のコード例を index.js の下に貼り付けます。

    var AWS = require('aws-sdk'); exports.handler = function(event, context) { var codepipeline = new AWS.CodePipeline(); // Retrieve the Job ID from the Lambda action var jobId = event["CodePipeline.job"].id; // Retrieve the value of UserParameters from the Lambda action configuration in AWS CodePipeline, // in this case it is the Commit ID of the latest change of the pipeline. var params = event["CodePipeline.job"].data.actionConfiguration.configuration.UserParameters; // The region from where the lambda function is being executed. var lambdaRegion = process.env.AWS_REGION; // Notify AWS CodePipeline of a successful job var putJobSuccess = function(message) { var params = { jobId: jobId, outputVariables: { testRunId: Math.floor(Math.random() * 1000).toString(), dateTime: Date(Date.now()).toString(), region: lambdaRegion } }; codepipeline.putJobSuccessResult(params, function(err, data) { if(err) { context.fail(err); } else { context.succeed(message); } }); }; // Notify AWS CodePipeline of a failed job var putJobFailure = function(message) { var params = { jobId: jobId, failureDetails: { message: JSON.stringify(message), type: 'JobFailed', externalExecutionId: context.invokeid } }; codepipeline.putJobFailureResult(params, function(err, data) { context.fail(message); }); }; var sendResult = function() { try { console.log("Testing commit - " + params); // Your tests here // Succeed the job putJobSuccess("Tests passed."); } catch (ex) { // If any of the assertions failed then fail the job putJobFailure(ex); } }; sendResult(); };
  7. [Save] を選択します。

  8. 画面上部の Amazon リソースネーム (ARN) をコピーします。

  9. 最後のステップとして、https://console.aws.amazon.com/iam/ で AWS Identity and Access Management (IAM) コンソールを開きます。Lambda実行ロールを変更して、次のポリシーを追加します。AWSCodePipelineカスタムアクションアクセス. Lambda 実行ロールを作成したり、ロールポリシーを変更したりする手順については、「ステップ 2. Lambda 関数を作成する」を参照してください。

ステップ 2. の追加 Lambda アクションと手動承認アクションをパイプラインに呼び出す

このステップでは、パイプラインに Lambda 呼び出しアクションを追加します。Test という名前のステージの一部としてアクションを追加します。アクションタイプは、呼び出しアクションです。次に、呼び出しアクションの後に、手動承認アクションを追加します。

パイプラインに Lambda アクションと手動承認アクションを追加するには

  1. CodePipeline コンソール (https://console.aws.amazon.com/codepipeline/) を開きます。

    AWS アカウントに関連付けられているすべてのパイプラインの名前が表示されます。アクションを追加するパイプラインを選択します。

  2. パイプラインに Lambda テストアクションを追加します。

    1. パイプラインを編集するには、[編集] を選択します。既存のパイプラインで、ソースアクションの後にステージを追加します。ステージの名前 (Test など) を入力します。

    2. 新しいステージで、アクションを追加するアイコンを選択します。「アクション名」に、呼び出しアクションの名前 (Test_Commit など) を入力します。

    3. [アクションプロバイダ] で、[AWS Lambda] を選択します。

    4. [入力アーティファクト] で、ソースアクションの出力アーティファクトの名前 (SourceArtifact など) を選択します。

    5. [関数名] で、作成した Lambda 関数の名前を選択します。

    6. [ユーザーパラメータ] に、CodeCommit コミット ID の変数構文を入力します。これにより、パイプラインが実行されるたびに確認および承認されるコミットに解決される出力変数が作成されます。

      #{SourceVariables.CommitId}
    7. [変数名前空間] に名前空間名 (TestVariables など) を追加します。

      
                                Lambda テストアクションを追加するときに使用できるオプションを示すコンソールのスクリーンショット。
    8. [完了] を選択します。

  3. パイプラインに手動の承認アクションを追加します。

    1. パイプラインが編集モードのままで、呼び出しアクションの後にステージを追加します。ステージの名前 (Approval など) を入力します。

    2. 新しいステージで、アクションを追加するアイコンを選択します。[アクション名] に、承認アクションの名前 (Change_Approval など) を入力します。

    3. [アクションプロバイダ] で、[手動承認] を選択します。

    4. [レビューする URL] で、region 変数と CommitId 変数の変数構文を追加して URL を作成します。出力変数を提供するアクションに割り当てられた名前空間を使用してください。

      この例では、 CodeCommit アクションにはデフォルトの名前空間があります SourceVariables。 Lambda領域出力変数には、 TestVariables 名前空間。URL は次のようになります。

      https://#{TestVariables.region}.console.aws.amazon.com/codesuite/codecommit/repositories/MyDemoRepo/commit/#{SourceVariables.CommitId}

      [コメント] で、testRunId 変数の変数構文を追加して、承認メッセージテキストを作成します。この例では、Lambda testRunId 出力変数の変数構文を持つ URL には TestVariables 名前空間があります。以下のメッセージを入力します。

      Make sure to review the code before approving this action. Test Run ID: #{TestVariables.testRunId}
      
                                URL とコメントのメッセージを入力するボックスが表示されたコンソールのスクリーンショット。
  4. [完了] を選択してアクションの編集画面を閉じ、[完了] を選択してステージの編集画面を閉じます。パイプラインを保存するには、[完了] を選択します。完成したパイプラインには、ソース、テスト、承認、デプロイの各ステージがある構造が含まれています。

    
                        ソース、テスト、承認、デプロイのパイプラインステージを示すコンソールのスクリーンショット。

    [変更のリリース] を選択して、パイプライン構造で最新の変更を実行します。

  5. パイプラインが手動承認ステージに達したら、[確認] を選択します。解決された変数は、コミット ID の URL として表示されます。承認者は、コミットを表示する URL を選択できます。

    
                        [承認] ボタンと [却下] ボタンがある確認ダイアログボックスを示すコンソールのスクリーンショット。
  6. パイプラインが正常に実行されたら、アクションの実行履歴ページで変数の値を表示することもできます。

    
                        解決された構成を示すアクション構成ウィンドウのコンソールスクリーンショット。