例: 既存の 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 など) で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" ] } ] }

リポジトリに 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 リポジトリにタグまたはブランチを作成する場合にのみトリガーが実行されるようにするには、[All repository events (すべてのリポジトリイベント)] の選択を解除し、[Create branch or tag (ブランチまたはタグを作成する)] を選択します。

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

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

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

    ファイルを保存します。

    例えば、2 つのブランチ、 mainおよび に対して、すべてのリポジトリイベントを という名前の Lambda 関数に発行MyDemoRepoする という名前のリポジトリMyCodeCommitFunctionのトリガーを作成するとします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 関数からの応答がその関数の [モニタリング] タブに表示されます。