Buat EventBridge aturan untuk CodeCommit sumber (AWS CloudFormation template) - 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 CodeCommit sumber (AWS CloudFormation template)

Untuk digunakan AWS CloudFormation untuk membuat aturan, perbarui template Anda seperti yang ditunjukkan di sini.

Untuk memperbarui AWS CloudFormation template pipeline Anda dan membuat EventBridge aturan
  1. Di template, di bawahResources, gunakan AWS::IAM::Role AWS CloudFormation sumber daya untuk mengonfigurasi IAM peran 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? Menambahkan AWS::IAM::Role sumber daya memungkinkan AWS CloudFormation untuk membuat izin untuk EventBridge. Sumber daya ini ditambahkan ke AWS CloudFormation tumpukan Anda.

    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: !Join [ '', [ 'arn:aws:codepipeline:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':', !Ref 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::Join": [ "", [ "arn:aws:codepipeline:", { "Ref": "AWS::Region" }, ":", { "Ref": "AWS::AccountId" }, ":", { "Ref": "AppPipeline" } ] ...
  2. Dalam template, di bawahResources, gunakan AWS::Events::Rule AWS CloudFormation sumber daya untuk menambahkan EventBridge aturan. Pola acara ini membuat acara yang memantau perubahan push ke repositori Anda. Saat EventBridge mendeteksi perubahan status repositori, aturan akan muncul di pipeline target AndaStartPipelineExecution.

    Mengapa saya membuat perubahan ini? Menambahkan AWS::Events::Rule sumber daya memungkinkan AWS CloudFormation untuk membuat acara. Sumber daya ini ditambahkan ke AWS CloudFormation tumpukan Anda.

    YAML
    EventRule: Type: AWS::Events::Rule Properties: EventPattern: source: - aws.codecommit detail-type: - 'CodeCommit Repository State Change' resources: - !Join [ '', [ 'arn:aws:codecommit:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':', !Ref RepositoryName ] ] detail: event: - referenceCreated - referenceUpdated referenceType: - branch referenceName: - main Targets: - Arn: !Join [ '', [ 'arn:aws:codepipeline:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':', !Ref AppPipeline ] ] RoleArn: !GetAtt EventRole.Arn Id: codepipeline-AppPipeline
    JSON
    "EventRule": { "Type": "AWS::Events::Rule", "Properties": { "EventPattern": { "source": [ "aws.codecommit" ], "detail-type": [ "CodeCommit Repository State Change" ], "resources": [ { "Fn::Join": [ "", [ "arn:aws:codecommit:", { "Ref": "AWS::Region" }, ":", { "Ref": "AWS::AccountId" }, ":", { "Ref": "RepositoryName" } ] ] } ], "detail": { "event": [ "referenceCreated", "referenceUpdated" ], "referenceType": [ "branch" ], "referenceName": [ "main" ] } }, "Targets": [ { "Arn": { "Fn::Join": [ "", [ "arn:aws:codepipeline:", { "Ref": "AWS::Region" }, ":", { "Ref": "AWS::AccountId" }, ":", { "Ref": "AppPipeline" } ] ] }, "RoleArn": { "Fn::GetAtt": [ "EventRole", "Arn" ] }, "Id": "codepipeline-AppPipeline" } ] } },
  3. Simpan template yang diperbarui ke komputer lokal Anda, lalu buka AWS CloudFormation konsol.

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

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

  6. Pilih Eksekusi.

Untuk mengedit PollForSourceChanges parameter pipeline
penting

Dalam banyak kasus, PollForSourceChanges parameter default ke true saat Anda membuat pipeline. Saat Anda menambahkan deteksi perubahan berbasis peristiwa, Anda harus menambahkan parameter ke output Anda dan mengaturnya ke false untuk menonaktifkan polling. Jika tidak, pipeline Anda dimulai dua kali untuk satu perubahan sumber. Untuk detailnya, lihat Pengaturan yang valid untuk PollForSourceChanges parameter.

  • Dalam template, ubah PollForSourceChanges kefalse. Jika Anda tidak menyertakan PollForSourceChanges dalam definisi pipeline Anda, tambahkan dan atur kefalse.

    Mengapa saya membuat perubahan ini? Mengubah parameter ini untuk false mematikan pemeriksaan berkala sehingga Anda hanya dapat menggunakan deteksi perubahan berbasis peristiwa.

    YAML
    Name: Source Actions: - Name: SourceAction ActionTypeId: Category: Source Owner: AWS Version: 1 Provider: CodeCommit OutputArtifacts: - Name: SourceOutput Configuration: BranchName: !Ref BranchName RepositoryName: !Ref RepositoryName PollForSourceChanges: false RunOrder: 1
    JSON
    { "Name": "Source", "Actions": [ { "Name": "SourceAction", "ActionTypeId": { "Category": "Source", "Owner": "AWS", "Version": 1, "Provider": "CodeCommit" }, "OutputArtifacts": [ { "Name": "SourceOutput" } ], "Configuration": { "BranchName": { "Ref": "BranchName" }, "RepositoryName": { "Ref": "RepositoryName" }, "PollForSourceChanges": false }, "RunOrder": 1 } ] },