

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 template)
<a name="create-cwe-ecr-source-cfn"></a>



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

**Untuk memperbarui CloudFormation template pipeline Anda dan membuat EventBridge aturan**

1. Di template, di bawah`Resources`, gunakan `AWS::IAM::Role` CloudFormation sumber daya untuk mengonfigurasi peran IAM yang memungkinkan acara Anda memulai pipeline. Entri ini membuat peran yang menggunakan dua kebijakan:
   + Kebijakan pertama memungkinkan peran diasumsikan.
   + Kebijakan kedua memberikan izin untuk memulai pipeline.

   **Mengapa saya membuat perubahan ini?** Anda harus membuat peran yang dapat diasumsikan oleh 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}"
                                   }
                               }
                           ]
                       }
                   }
               ]
           }
       }
   }
   ...
   ```

------

1. Dalam template, di bawah`Resources`, gunakan `AWS::Events::Rule` CloudFormation sumber daya untuk menambahkan EventBridge aturan untuk sumber Amazon ECR. Pola acara ini membuat acara yang memantau komit ke repositori Anda. Saat EventBridge mendeteksi perubahan status repositori, aturan akan muncul di pipeline target Anda`StartPipelineExecution`.

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

   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 peristiwa lengkap yang didukung untuk peristiwa Amazon ECR, lihat Acara [ECR Amazon dan atau Acara](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ecr-eventbridge.html) [Registri Penampung Elastis EventBridge Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/event-types.html#ecr-event-types).

1. (Opsional) Untuk mengonfigurasi transformator input dengan penggantian sumber untuk ID gambar tertentu, gunakan cuplikan YAMAL berikut. Contoh berikut mengonfigurasi penggantian di mana:
   + `Source`Dalam contoh ini, adalah nilai dinamis, yang didefinisikan pada pembuatan pipeline, bukan berasal dari peristiwa sumber. `actionName`
   + `IMAGE_DIGEST`Dalam contoh ini, adalah nilai dinamis, yang didefinisikan pada pembuatan pipeline, bukan berasal dari peristiwa sumber. `revisionType`
   + The`revisionValue`, < {{revisionValue}} > dalam contoh ini, berasal 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}}>'
   ```

1. Simpan template yang diperbarui ke komputer lokal Anda, lalu buka CloudFormation konsol.

1. Pilih tumpukan Anda, lalu pilih **Create Change Set for Current Stack**. 

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

1. Pilih **Eksekusi**.