例: 既存の AWS CodeCommit 関数用のトリガーを AWS Lambda に作成する - AWS CodeCommit

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

例: 既存の AWS CodeCommit 関数用のトリガーを AWS Lambda に作成する

Lambda 関数を呼び出すトリガーを作成する最も簡単な方法は、Lambda コンソールでトリガーを作成することです。この組み込みの統合により、 CodeCommit に関数の実行に必要なアクセス許可が付与されます。既存の Lambda 関数のトリガーを追加するには、Lambda コンソールに移動し、この関数を選択します。関数の [トリガー] タブで、[Add trigger (トリガーの追加)] のステップに従います。これらのステップは、「Lambda 関数を作成する」に示されている手順と似ています。

CodeCommit リポジトリに Lambda 関数のトリガーを作成することもできます。そのためには、既存の Lambda 関数を選択して呼び出す必要があります。また、 が関数を実行する CodeCommit ために必要なアクセス許可を手動で設定する必要があります。

が Lambda 関数を実行できるように CodeCommit アクセス許可を手動で設定する

Lambda 関数 CodeCommit を呼び出すトリガーを で作成する場合は、Lambda 関数の実行を CodeCommit に許可するアクセス許可を手動で設定する必要があります。この手動設定を避けるには、代わりに Lambda コンソールで関数のトリガーを作成することを検討してください。

CodeCommit に Lambda 関数の実行を許可するには
  1. プレーンテキストエディタを開き、次のような Lambda 関数名、 CodeCommit リポジトリの詳細、Lambda で許可するアクションを指定する JSON ファイルを作成します。

    { "FunctionName": "MyCodeCommitFunction", "StatementId": "1", "Action": "lambda:InvokeFunction", "Principal": "codecommit.amazonaws.com", "SourceArn": "arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo", "SourceAccount": "111122223333" }
  2. ファイルを、覚えやすい名前 (.json など) の JSON ファイルとして保存しますAllowAccessfromMyDemoRepo

  3. 前の手順で作成した JSON ファイルを使用して、ターミナル (Linux、macOS、Unix) またはコマンドライン (Windows) で、aws lambda add-permissions コマンドを実行して、Lambda 関数に関連付けられたリソースポリシーに対するアクセス許可を追加します。

    aws lambda add-permission --cli-input-json file://AllowAccessfromMyDemoRepo.json

    このコマンドでは、先ほど追加したポリシーステートメントの JSON が返ります。次のようになります。

    { "Statement": "{\"Condition\":{\"StringEquals\":{\"AWS:SourceAccount\":\"111122223333\"},\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo\"}},\"Action\":[\"lambda:InvokeFunction\"],\"Resource\":\"arn:aws:lambda:us-east-1:111122223333:function:MyCodeCommitFunction\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"codecommit.amazonaws.com\"},\"Sid\":\"1\"}" }

    Lambda 関数のリソースポリシーの詳細については、AddPermission「」および AWS Lambda ユーザーガイド「プル/プッシュイベントモデル」を参照してください。

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

  5. [ダッシュボード] ナビゲーションペインで、[ロール] を選択し、ロールのリストで、[lambda_basic_execution] を選択します。

  6. ロールの [Summary] ページで、[Permissions (アクセス許可)] タブを選択し、[Inline Policies (インラインポリシー)] セクションで、[Create Role Policy (ロールポリシーの作成)] を選択します。

  7. [Set Permissions (アクセス許可の設定)] ページで、[Custom Generator (カスタムジェネレーター)] を選択し、次に [選択] をクリックします。

  8. [Edit Permissions] ページで、以下を実行します。

    • [Effect] で、[Allow] を選択します。

    • [AWS のサービス] で、[AWS CodeCommit] を選択します。

    • アクション で、 を選択しますGetRepository

    • [Amazon リソースネーム (ARN)] に、リポジトリの ARN (例: arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo) を入力します。

    [Add Statement]、[Next Step] の順に選択します。

  9. [Review Policy] ページで、[Apply Policy] を選択します。

    ポリシーステートメントは、次の例のようになります。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt11111111", "Effect": "Allow", "Action": [ "codecommit:GetRepository" ], "Resource": [ "arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo" ] } ] }

リポジトリに CodeCommit Lambda 関数のトリガーを作成する (コンソール)

Lambda 関数を作成したら、指定したリポジトリイベントに応答して関数 CodeCommit を実行するトリガーを で作成できます。

注記

この例のトリガーを正常にテストまたは実行する前に、 が 関数 CodeCommit を呼び出すことを許可するポリシーと、リポジトリに関する情報を取得するための Lambda 関数を設定する必要があります。詳細については、「 CodeCommit に Lambda 関数の実行を許可するには」を参照してください。

Lambda 関数のトリガーを作成する
  1. https://console.aws.amazon.com/codesuite/codecommit/home で CodeCommit コンソールを開きます。

  2. リポジトリで、リポジトリイベントのトリガーを作成するリポジトリを選択します。

  3. リポジトリのナビゲーションペインで、[設定] を選択し、[トリガー] を選択します。

  4. [Create trigger (トリガーの作成)] を選択します。

  5. [Create trigger (トリガーの作成)] で、以下の操作を行います。

    • 「トリガー名」に、トリガーの名前 (例: ) を入力しますMyLambdaFunctionTrigger

    • [Events (イベント)] で、Lambda 関数をトリガーするリポジトリイベントを選択します。

      [すべてのリポジトリイベント] を選択すると、他のイベントは選択できません。イベントのサブセットを選択する場合は、[すべてのリポジトリイベント] の選択を解除してから、使用するイベントをリストから選択します。たとえば、ユーザーが CodeCommit リポジトリにタグまたはブランチを作成する場合にのみトリガーが実行されるようにするには、[All repository events (すべてのリポジトリイベント)] の選択を解除し、[Create branch or tag (ブランチまたはタグを作成する)] を選択します。

    • トリガーをリポジトリのすべてのブランチに適用する場合は、[ブランチ] で選択を空白のままにします。このデフォルトのオプションでは、トリガーがすべてのブランチに自動的に適用されます。このトリガーを特定のブランチにのみ適用する場合は、リポジトリブランチのリストから最大 10 個のブランチ名を選択します。

    • [Choose the service to use (使用するサービスを選択する)] で、[AWS Lambda] を選択します。

    • [Lambda 関数] で、リストから関数名を選択するか、関数の ARN を入力します。

    • (オプション) [Custom data (カスタムデータ)] に、Lambda 関数に含める情報 (例: 開発者がリポジトリでの開発に関するやり取りに使用する IRC チャネルの名前) を入力します。このフィールドは文字列です。これは動的パラメータを渡すために使用することはできません。

  6. (オプション) [トリガーのテスト] を選択します。このオプションでは、リポジトリの最新コミット ID など、リポジトリに関するサンプルデータを使用して、関数を呼び出します。(コミット履歴が存在しない場合は、ゼロで構成されるサンプル値が生成されます。) これは、 CodeCommit と Lambda 関数間のアクセスが正しく設定されていることを確認するのに役立ちます。

  7. [Create trigger (トリガーを作成する)] を選択して、トリガーの作成を完了します。

  8. トリガーの機能を検証するには、コミットを作成し、トリガーを設定したリポジトリに対してプッシュします。Lambda コンソールで、Lambda 関数からの応答がその関数の [モニタリング] タブに表示されます。

リポジトリの CodeCommit Lambda 関数へのトリガーを作成する (AWS CLI)

コマンドラインを使用して、ユーザーがコミットを CodeCommit リポジトリにプッシュする場合など、リポジトリイベントに応じて Lambda 関数のトリガーを作成することもできます。

Lambda 関数のトリガーを作成するには
  1. プレーンテキストエディタを開き、次を指定する JSON ファイルを作成します。

    • Lambda 関数の名前。

    • このトリガーで監視するリポジトリとブランチ。(ブランチを指定しない場合、トリガーはリポジトリのすべてのブランチに適用されます。)

    • このトリガーをアクティブ化するイベントです。

    ファイルを保存します。

    例えば、main preprod という 2 つのブランチMyCodeCommitFunctionの という名前の Lambda 関数にすべてのリポジトリイベントを発行MyDemoRepoする、 という名前のリポジトリのトリガーを作成するとします。

    { "repositoryName": "MyDemoRepo", "triggers": [ { "name": "MyLambdaFunctionTrigger", "destinationArn": "arn:aws:lambda:us-east-1:111122223333:function:MyCodeCommitFunction", "customData": "", "branches": [ "main", "preprod" ], "events": [ "all" ] } ] }

    リポジトリのトリガーごとに、JSON にトリガーブロックが必要です。リポジトリのトリガーを複数作成するには、JSON にブロックを追加します。このファイルに作成されたすべてのトリガーは指定されたリポジトリであることに注意してください。1 つの JSON ファイルに複数のリポジトリのトリガーを作成することはできません。たとえば、リポジトリに対して 2 つのトリガーを作成する場合は、2 つのトリガーブロックを持つ JSON ファイルを作成できます。次の例では、2 番目のトリガーブロックに指定されているブランチはないため、トリガーはすべてのブランチに適用されます。

    { "repositoryName": "MyDemoRepo", "triggers": [ { "name": "MyLambdaFunctionTrigger", "destinationArn": "arn:aws:lambda:us-east-1:111122223333:function:MyCodeCommitFunction", "customData": "", "branches": [ "main", "preprod" ], "events": [ "all" ] }, { "name": "MyOtherLambdaFunctionTrigger", "destinationArn": "arn:aws:lambda:us-east-1:111122223333:function:MyOtherCodeCommitFunction", "customData": "", "branches": [], "events": [ "updateReference", "deleteReference" ] } ] }

    たとえば、コミットがリポジトリにプッシュされたときは、指定したイベントのトリガーを作成できます。イベントタイプは次のとおりです。

    • all: 指定されたリポジトリとブランチのすべてのイベント。

    • updateReference : 指定されたリポジトリやブランチにコミットをプッシュされた場合。

    • createReference: 指定されたリポジトリに新しいブランチまたはタグが作成された場合。

    • deleteReference: 指定されたリポジトリ内のブランチまたはタグが削除された場合。

    注記

    トリガー内で複数のイベントタイプを使用できます。ただし、all を指定すると、他のイベントを指定することはできません。

    有効なイベントタイプのリストを一覧表示するには、ターミナルまたはコマンドプロンプトで、「aws codecommit put-repository-triggers help」と入力します。

    また、customData に文字列を含めることもできます (たとえば、開発者がこのリポジトリで開発について検討するときに使用する IRC チャネル名)。このフィールドは文字列です。これは動的パラメータを渡すために使用することはできません。この文字列は、トリガーに応答して返される CodeCommit JSON に属性として追加されます。

  2. (オプション) ターミナルまたはコマンドラインプロンプトで、test-repository-triggers コマンドを実行することもできます。例えば、以下は trigger.json という名前の JSON ファイルが有効で、Lambda 関数をトリガー CodeCommit できることをテストするために使用されます。利用できる実際のデータがない場合、このテストでは、サンプルデータを使用して関数をトリガーします。

    aws codecommit test-repository-triggers --cli-input-json file://trigger.json

    成功した場合、このコマンドは次のような情報を返します。

    { "successfulExecutions": [ "MyLambdaFunctionTrigger" ], "failedExecutions": [] }
  3. ターミナルまたはコマンドプロンプトで、put-repository-triggers コマンドを実行して CodeCommit にトリガーを作成します。たとえば、trigger.json という JSON ファイルを使用してトリガーを作成するには、次のようにします。

    aws codecommit put-repository-triggers --cli-input-json file://trigger.json

    このコマンドでは、次のような設定 ID が返されます。

    { "configurationId": "0123456-I-AM-AN-EXAMPLE" }
  4. トリガーの設定を表示するには、get-repository-triggers コマンドを実行して、リポジトリの名前を指定します。

    aws codecommit get-repository-triggers --repository-name MyDemoRepo

    このコマンドは、リポジトリ用に構成されたすべてのトリガーの構造を、次のように戻します。

    { "configurationId": "0123456-I-AM-AN-EXAMPLE", "triggers": [ { "events": [ "all" ], "destinationArn": "arn:aws:lambda:us-east-1:111122223333:MyCodeCommitFunction", "branches": [ "main", "preprod" ], "name": "MyLambdaFunctionTrigger", "customData": "Project ID 12345" } ] }
  5. トリガーの機能を確認するには、コミットを作成し、トリガーを設定したリポジトリに対してプッシュします。Lambda コンソールで、Lambda 関数からの応答がその関数の [モニタリング] タブに表示されます。