View a markdown version of this page

Buat EventBridge aturan untuk sumber Amazon ECR (CloudFormation templat) - AWS CodePipeline

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Buat EventBridge aturan untuk sumber Amazon ECR (CloudFormation templat)

Untuk menggunakan CloudFormation untuk membuat aturan, gunakan cuplikan template seperti yang ditunjukkan di sini.

Untuk memperbarui pipeline Anda CloudFormation template dan buat EventBridge aturan
  1. Di template, di bawahResources, gunakan AWS::IAM::Role CloudFormation sumber daya untuk mengonfigurasi peran IAM yang memungkinkan acara Anda memulai pipeline Anda. Entri ini membuat peran yang menggunakan dua kebijakan:

    • Kebijakan pertama memungkinkan peran untuk diasumsikan.

    • Kebijakan kedua memberikan izin untuk memulai pipeline.

    Mengapa saya membuat perubahan ini? Anda harus membuat peran yang dapat diasumsikan EventBridge untuk memulai eksekusi di pipeline kami.

    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. Di template, di bawahResources, gunakan AWS::Events::Rule CloudFormation sumber daya untuk menambahkan EventBridge aturan untuk sumber Amazon ECR. Pola peristiwa ini membuat peristiwa yang memantau commit ke repositori Anda. Saat EventBridge mendeteksi perubahan status repositori, aturan akan dipanggil StartPipelineExecution pada pipeline target Anda.

    Mengapa saya membuat perubahan ini? Anda harus membuat acara dengan aturan yang menentukan bagaimana dorongan gambar harus dibuat, dan target yang memberi nama pipeline yang akan dimulai oleh acara.

    Cuplikan ini menggunakan gambar bernama eb-test dengan tag. latest

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

    Untuk melihat pola acara lengkap yang didukung untuk acara Amazon ECR, lihat Amazon ECR Events dan EventBridge atau Amazon Elastic Container Registry Events.

  3. (Opsional) Untuk mengonfigurasi transformator input dengan penggantian sumber untuk ID gambar tertentu, gunakan cuplikan YAML berikut. Contoh berikut mengonfigurasi penggantian di mana:

    • Dalam actionName contoh ini, adalah nilai dinamis, didefinisikan pada pembuatan pipeline, bukan berasal dari peristiwa sumber. Source

    • Dalam revisionType contoh ini, adalah nilai dinamis, didefinisikan pada pembuatan pipeline, bukan berasal dari peristiwa sumber. IMAGE_DIGEST

    • revisionValue, < revisionValue > dalam contoh ini, diturunkan dari variabel peristiwa sumber.

    --- Rule: my-rule Targets: - Id: MyTargetId Arn: ARN InputTransformer: InputPathsMap: revisionValue: "$.detail.image-digest" InputTemplate: sourceRevisions: actionName: Source revisionType: IMAGE_DIGEST revisionValue: '<revisionValue>'
  4. Simpan template yang diperbarui ke komputer lokal Anda, lalu buka CloudFormation konsol.

  5. Pilih tumpukan Anda, lalu pilih Buat Set Perubahan untuk Tumpukan Saat Ini.

  6. Unggah template, lalu lihat perubahan yang tercantum di CloudFormation. Ini adalah perubahan yang harus dilakukan pada tumpukan. Anda harus melihat sumber daya baru Anda dalam daftar.

  7. Pilih Eksekusi.