チュートリアル: Lambda 呼び出しアクションで変数を使用する - AWS CodePipeline

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

チュートリアル: Lambda 呼び出しアクションで変数を使用する

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

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

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

    • 消費するCommitIdCodeCommit ソースアクションからの変数

    • 3 つの新しい変数として dateTimetestRunIdregion を出力する

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

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

前提条件

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

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

Lambda 関数と Lambda 実行ロールを作成するには、次の手順に従います。Lambda 関数を作成した後、パイプラインに Lambda アクションを追加します。

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

  1. AWS Management Console にサインインして AWS Lambda コンソール (https://console.aws.amazon.com/lambda/) を開きます。

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

  3. [関数名] に、関数の名前 (myInvokeFunction など) を入力します。[ランタイム] は、デフォルトのオプションを選択したままにします。

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

  5. [関数の作成] を選択します。

  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. 最後のステップとして、AWS Identity and Access Management(IAM) コンソールhttps://console.aws.amazon.com/iam/。Lambda 実行ロールを変更して、次のポリシーを追加します。AWSCODEパイプラインアクションアクセス。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. Eclipse関数名で、作成した Lambda 関数の名前を選択します。

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

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

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

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

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

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

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

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

      この例では、CodeCommit アクションの変数構文を持つ URL には、デフォルトの名前空間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. パイプラインが正常に実行されたら、アクションの実行履歴ページで変数の値を表示することもできます。

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