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

AWS CodeCommit は、新規顧客には利用できなくなりました。 AWS CodeCommit の既存のお客様は、通常どおりサービスを引き続き使用できます。詳細はこちら

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

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

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ファイルとしてファイルを保存します (例:AllowAccessfromMyDemoRepo.json)。

  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" ] } ] }

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

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 リポジトリにタグまたはブランチを作成した場合にのみトリガーを実行する場合は、すべてのリポジトリイベント を削除し、ブランチまたはタグの作成 を選択します。

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

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

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

    • (オプション) カスタムデータ に、Lambda 関数に含める情報 (例えば、デベロッパーがリポジトリでの開発について議論するために使用するIRCチャネルの名前) を入力します。このフィールドは文字列です。これは動的パラメータを渡すために使用することはできません。

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

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

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

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

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

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

    • Lambda 関数の名前。

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

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

    ファイルを保存します。

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

    { "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 コマンドを実行することもできます。例えば、以下を使用して、 という名前のJSONファイルが trigger.json は有効で、Lambda 関数をトリガー CodeCommit できます。利用できる実際のデータがない場合、このテストでは、サンプルデータを使用して関数をトリガーします。

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

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

    { "successfulExecutions": [ "MyLambdaFunctionTrigger" ], "failedExecutions": [] }
  3. ターミナルまたはコマンドプロンプトで、 put-repository-triggers コマンドを実行して でトリガーを作成します CodeCommit。例えば、 という名前のJSONファイルを使用するには trigger.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 関数からの応答がその関数の [モニタリング] タブに表示されます。