Amazon ECR ソースの CloudWatch イベント ルールを作成する (CLI) - AWS CodePipeline

Amazon ECR ソースの CloudWatch イベント ルールを作成する (CLI)

put-rule コマンドを呼び出して、以下を指定します。

  • 作成中のルールを一意に識別する名前。この名前は、AWS アカウントに関連付けられた CodePipeline で作成するすべてのパイプラインで一意である必要があります。

  • ルールで使用するソースと詳細フィールドのイベントパターン。詳細については、「Amazon CloudWatch Events およびイベントパターン」を参照してください。

Amazon ECR をイベントソースとして、CodePipeline をターゲットとして、CloudWatch イベント ルールを作成するには

  1. CodePipeline を使用してルールを呼び出すための Amazon CloudWatch Events アクセス権限を追加します。詳細については、「Amazon CloudWatch Events のリソースベースのポリシーを使用する」を参照してください。

    1. 次のサンプルを使用して、CloudWatch イベント がサービスロールを引き受けることができる信頼ポリシーを作成します。信頼ポリシーに trustpolicyforCWE.json と名前を付けます。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. 次のコマンドを使用して、Role-for-MyRule ロールを作成し、信頼ポリシーをアタッチします。

      aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforCWE.json
    3. 次のサンプルに示すように、MyFirstPipeline という名前のパイプラインに対して、アクセス権限ポリシー JSON を作成します。 アクセス許可ポリシーに permissionspolicyforCWE.json と名前を付けます。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:StartPipelineExecution" ], "Resource": [ "arn:aws:codepipeline:us-west-2:80398EXAMPLE:MyFirstPipeline" ] } ] }
    4. 次のコマンドを使用して、Role-for-MyRule ロールに CodePipeline-Permissions-Policy-for-CWE アクセス権限ポリシーをアタッチします。

      この変更を行う理由 ロールにこのポリシーを追加すると、CloudWatch イベント のアクセス権限が作成されます。

      aws iam put-role-policy --role-name Role-for-MyRule --policy-name CodePipeline-Permissions-Policy-For-CWE --policy-document file://permissionspolicyforCWE.json
  2. コマンドを呼び出し、put-rule--name、および --event-pattern パラメータを含めます。--role-arn

    この変更を行う理由 イメージプッシュを行う方法を指定するルールと、そのイベントによって開始されるパイプラインを指定するターゲットを持つイベントを作成する必要があります。

    次のサンプルコマンドは、MyECRRepoRule というルールを作成します。

    aws events put-rule --name "MyECRRepoRule" --event-pattern "{\"detail-type\":[\"ECR Image Action\"],\"source\":[\"aws.ecr\"],\"detail\":{\"action-type\":[\"PUSH\"],\"image-tag\":[\"latest\"],\"repository-name\":[\"cwe-test\"],\"result\":[\"SUCCESS\"]}}}" --role-arn "arn:aws:iam::ACCOUNT_ID:role/Role-for-MyRule"
    注記

    Amazon ECR イベントでサポートされているイベントパターン全体を表示するには、「Amazon ECR イベントと EventBridge」または「Amazon Elastic Container Registry イベント」を参照してください。

  3. CodePipeline をターゲットとして追加するには、put-targets コマンドを呼び出し、次のパラメータを含めます。

    • --rule パラメータは、put-rule を使用して作成した rule_name で使用されます。

    • --targets パラメータは、ターゲットリストのリスト Id とターゲットパイプラインの ARN で使用されます。

    次のサンプルコマンドでは、MyECRRepoRule と呼ばれるルールに対して指定し、ターゲット Id は 1 番で構成されています。これは、ルールのターゲットのリストが何であるかを示し、この場合は ターゲット 1 です。サンプルコマンドでは、パイプラインの例 Arn とルールの例 RoleArn も指定します。パイプラインは、リポジトリ内に変更が加えられると開始します。

    aws events put-targets --rule MyECRRepoRule --targets Id=1,Arn=arn:aws:codepipeline:us-west-2:80398EXAMPLE:TestPipeline,RoleArn=arn:aws:iam::80398EXAMPLE:role/Role-for-MyRule