Amazon ECR ソースの EventBridge ルールを作成する (AWS CloudFormation テンプレート) - AWS CodePipeline

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

Amazon ECR ソースの EventBridge ルールを作成する (AWS CloudFormation テンプレート)

AWS CloudFormation を使用してルールを作成するには、次に示すようにテンプレートスニペットを使用します。

パイプライン AWS CloudFormation テンプレートを更新して EventBridge ルールを作成するには
  1. テンプレートの でResourcesAWS::IAM::Role AWS CloudFormation リソースを使用して、イベントがパイプラインを開始できるようにする IAM ロールを設定します。このエントリによって、2 つのポリシーを使用するロールが作成されます。

    • 最初のポリシーでは、ロールを引き受けることを許可します。

    • 2 つめのポリシーでは、パイプラインを開始するアクセス権限が付与されます。

    この変更を行う理由 パイプラインで実行を開始するには、EventBridge によって引き受けることができるロールを作成する必要があります。

    YAML
    EventRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: - events.amazonaws.com Action: sts:AssumeRole Path: / Policies: - PolicyName: eb-pipeline-execution PolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Action: codepipeline:StartPipelineExecution Resource: !Sub arn:aws:codepipeline:${AWS::Region}:${AWS::AccountId}:${AppPipeline}
    JSON
    { "EventRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "events.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }, "Path": "/", "Policies": [ { "PolicyName": "eb-pipeline-execution", "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codepipeline:StartPipelineExecution", "Resource": { "Fn::Sub": "arn:aws:codepipeline:${AWS::Region}:${AWS::AccountId}:${AppPipeline}" } } ] } } ] } } } ...
  2. テンプレートの でResourcesAWS::Events::Rule AWS CloudFormation リソースを使用して Amazon ECR ソースの EventBridge ルールを追加します。このイベントパターンは、リポジトリへのコミットを監視するイベントを作成します。EventBridge でリポジトリの状態の変更が検出されると、ルールはターゲットパイプラインで StartPipelineExecution を呼び出します。

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

    このスニペットでは、latest のタグが付いた eb-test というイメージを使用しています。

    YAML
    EventRule: Type: 'AWS::Events::Rule' Properties: EventPattern: detail: action-type: [PUSH] image-tag: [latest] repository-name: [eb-test] result: [SUCCESS] detail-type: [ECR Image Action] source: [aws.ecr] Targets: - Arn: !Sub arn:aws:codepipeline:${AWS::Region}:${AWS::AccountId}:${AppPipeline} RoleArn: !GetAtt - EventRole - Arn Id: codepipeline-AppPipeline
    JSON
    { "EventRule": { "Type": "AWS::Events::Rule", "Properties": { "EventPattern": { "detail": { "action-type": [ "PUSH" ], "image-tag": [ "latest" ], "repository-name": [ "eb-test" ], "result": [ "SUCCESS" ] }, "detail-type": [ "ECR Image Action" ], "source": [ "aws.ecr" ] }, "Targets": [ { "Arn": { "Fn::Sub": "arn:aws:codepipeline:${AWS::Region}:${AWS::AccountId}:${AppPipeline}" }, "RoleArn": { "Fn::GetAtt": [ "EventRole", "Arn" ] }, "Id": "codepipeline-AppPipeline" } ] } } },
    注記

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

  3. (オプション) 特定のイメージ ID のソースオーバーライドを使用して入力トランスフォーマーを設定するには、次の YAML スニペットを使用します。次の例では、オーバーライドを設定します。

    • Source この例ではactionName、 は、ソースイベントから派生したものではなく、パイプラインの作成時に定義される動的値です。

    • IMAGE_DIGEST この例ではrevisionType、 は、ソースイベントから派生したものではなく、パイプラインの作成時に定義される動的値です。

    • この例の revisionValue、<revisionValue> は、ソースイベント変数から派生しています。

    --- Rule: my-rule Targets: - Id: MyTargetId Arn: ARN InputTransformer: InputPathsMap: revisionValue: "$.detail.image-digest" InputTemplate: sourceRevisions: actionName: Source revisionType: IMAGE_DIGEST revisionValue: '<revisionValue>'
  4. 更新したテンプレートをローカルコンピュータに保存し、 AWS CloudFormation コンソールを開きます。

  5. スタックを選択し、[既存スタックの変更セットの作成] を選択します。

  6. テンプレートをアップロードし、 AWS CloudFormationに示された変更を表示します。これらがスタックに加えられる変更です。新しいリソースがリストに表示されています。

  7. [実行] を選択してください。