例: 。でトリガを作成 AWS CodeCommit 既存の AWS Lambda 機能 - AWS CodeCommit

例: 。でトリガを作成 AWS CodeCommit 既存の AWS Lambda 機能

トリガーを作成する最も簡単な方法で、 Lambda 関数は、 Lambda コンソール。この組み込みの統合を使用すると、この関数を実行するために必要なアクセス許可を CodeCommit に付与することができます。既存の Lambda 機能を選択し、 Lambda 機能を選択します。の トリガー 」タブにある手順に従います。 トリガーの追加. これらのステップは、「」に示されている手順と似ています。_を作成 Lambda 機能.

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

許可を手動で構成する CodeCommit 実行するには Lambda 機能

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

許可する CodeCommit 実行するには Lambda 機能

  1. プレーンテキストエディタを開き、 Lambda 関数名、 CodeCommit リポジトリ、および Lambdaは、次のようなものです。

    { "FunctionName": "MyCodeCommitFunction", "StatementId": "1", "Action": "lambda:InvokeFunction", "Principal": "codecommit.amazonaws.com", "SourceArn": "arn:aws:codecommit:us-east-1:80398EXAMPLE:MyDemoRepo", "SourceAccount": "80398EXAMPLE" }
  2. 覚えやすい名前(たとえば、AllowAccessfromMyDemoRepo.json

  3. 作成したばかりのJSONファイルを端末(Linux, macOS, or Unix)またはコマンドライン(Windows)で、 aws lambda add-permissions コマンドを使用すると、 Lambda 関数:

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

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

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

    のリソースポリシーの詳細については、 Lambda 関数、を参照カンスウ、「 許可の追加 および プル/プッシュ・イベント・モデルAWS Lambda ユーザーガイド.

  4. AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/iam/)を開きます。

  5. ダッシュボード ナビゲーションペイン、選択 役割ロールのリストで、lambda_basic_execution.

  6. 役割のサマリーページで、 許可 タブ、および インラインポリシー、選択 ロール ポリシーの作成.

  7. 権限の設定 ページ、選択 ポリシージェネレーターを選択し、次に 選択.

  8. 権限の編集 ページを開き、以下を実行します。

    • 効果、選択 許可.

    • AWSサービス、選択 AWS CodeCommit.

    • アクション、選択 リポジトリを取得.

    • Amazonリソース名(ARN)、リポジトリの ARN を入力します(例: arn:aws:codecommit:us-east-1:80398EXAMPLE:MyDemoRepo)。

    選択 ステートメントの追加を選択し、次に 次のステップ.

  9. ポリシーのレビュー ページ、選択 ポリシーの適用.

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

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

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

作成後、 Lambda 関数では、 CodeCommit 指定したリポジトリイベントに応じて関数を実行する。

注記

例のトリガーを正常にテストまたは実行する前に、 CodeCommit 関数と Lambda リポジトリに関する情報を取得する関数。詳細については、「」を参照してください。許可する CodeCommit 実行するには Lambda 機能.

のトリガーを作成するには Lambda 機能

  1. https://console.aws.amazon.com/codesuite/codecommit/home にある CodeCommit コンソールを開きます。

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

  3. リポジトリのナビゲーション ペインで、 設定を選択し、次に トリガー.

  4. 選択 トリガーを作成.

  5. トリガーを作成、以下を実行します。

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

    • イベント、 Lambda 関数。

      選択する場合 すべてのリポジトリイベント、他のイベントを選択することはできません。イベントのサブセットを選択する場合は、クリアします。 すべてのリポジトリイベント、リストから目的のイベントを選択します。たとえば、ユーザーが CodeCommit リポジトリ、削除 すべてのリポジトリイベントを選択し、次に ブランチまたはタグの作成.

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

    • 使用するサービスを選択、選択 AWS Lambda.

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

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

  6. (オプション)選択 テストトリガー. このオプションでは、リポジトリの最新コミット ID など、リポジトリに関するサンプルデータを使用して、関数を呼び出します。(コミット履歴が存在しない場合は、代わりにゼロからなるサンプル値が生成されます。) これにより、 CodeCommit および Lambda 関数。

  7. 選択 トリガーを作成 トリガーの作成を終了します。

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

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

コマンド ラインを使用して、 Lambda 応答する関数 CodeCommit リポジトリイベント。たとえば、誰かがあなたのリポジトリにコミットをプッシュする場合など。

のトリガーを作成するには Lambda 機能

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

    • は、 Lambda 関数名。

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

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

    ファイルを保存します。

    たとえば、MyDemoRepo すべてのリポジトリイベントを Lambda 関数名 MyCodeCommitFunction 2つの支店で master および preprod:

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

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

    { "repositoryName": "MyDemoRepo", "triggers": [ { "name": "MyLambdaFunctionTrigger", "destinationArn": "arn:aws:lambda:us-east-1:80398EXAMPLE:function:MyCodeCommitFunction", "customData": "", "branches": [ "master", "preprod" ], "events": [ "all" ] }, { "name": "MyOtherLambdaFunctionTrigger", "destinationArn": "arn:aws:lambda:us-east-1:80398EXAMPLE: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 有効であり、 CodeCommit は、 Lambda 関数。利用できる実際のデータがない場合、このテストでは、サンプルデータを使用して関数をトリガーします。

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

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

    { "successfulExecutions": [ "MyLambdaFunctionTrigger" ], "failedExecutions": [] }
  3. 端末またはコマンドプロンプトで、 put-repository-triggers コマンドでトリガを作成する CodeCommit. たとえば、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:80398EXAMPLE:MyCodeCommitFunction", "branches": [ "master", "preprod" ], "name": "MyLambdaFunctionTrigger", "customData": "Project ID 12345" } ] }
  5. トリガーの機能を確認するには、コミットを作成し、トリガーを設定したリポジトリに対してプッシュします。_からの応答が表示されます。 Lambda の関数 モニタリング タブ( Lambda コンソール。