Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Untuk digunakan AWS CloudFormation untuk membuat aturan, perbarui template Anda seperti yang ditunjukkan di sini.
Untuk membuat EventBridge aturan dengan Amazon S3 sebagai sumber peristiwa dan CodePipeline sebagai target dan menerapkan kebijakan izin
-
Di template, di bawah
Resources
, gunakanAWS::IAM::Role
AWS 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? Menambahkan
AWS::IAM::Role
sumber daya memungkinkan AWS CloudFormation untuk membuat izin untuk EventBridge. Sumber daya ini ditambahkan ke AWS CloudFormation tumpukan Anda.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 ] ] ...
-
-
Gunakan
AWS::Events::Rule
AWS CloudFormation sumber daya untuk menambahkan EventBridge aturan. Pola acara ini membuat acara yang memantauCopyObject
,PutObject
danCompleteMultipartUpload
di bucket sumber Amazon S3 Anda. Selain itu, sertakan target pipa Anda. KetikaCopyObject
,PutObject
, atauCompleteMultipartUpload
terjadi, aturan ini munculStartPipelineExecution
di pipeline target Anda.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.EventRule: Type: AWS::Events::Rule Properties: EventPattern: source: - aws.s3 detail-type: - 'AWS API Call via CloudTrail' detail: eventSource: - s3.amazonaws.com eventName: - CopyObject - PutObject - CompleteMultipartUpload requestParameters: bucketName: - !Ref SourceBucket key: - !Ref SourceObjectKey Targets: - Arn: !Join [ '', [ 'arn:aws:codepipeline:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':', !Ref AppPipeline ] ] RoleArn: !GetAtt EventRole.Arn Id: codepipeline-AppPipeline ...
-
Tambahkan cuplikan ini ke template pertama Anda untuk memungkinkan fungsionalitas cross-stack:
Outputs: SourceBucketARN: Description: "S3 bucket ARN that Cloudtrail will use" Value: !GetAtt SourceBucket.Arn Export: Name: SourceBucketARN
-
(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
-
S3_OBJECT_VERSION_ID
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:
pipeline-ARN
InputTransformer: InputPathsMap: revisionValue: "$.detail.object.version-id" InputTemplate: sourceRevisions: actionName:Source
revisionType:S3_OBJECT_VERSION_ID
revisionValue: '<revisionValue
>' -
-
Simpan template Anda yang diperbarui ke komputer lokal Anda, dan buka AWS CloudFormation konsol.
-
Pilih tumpukan Anda, lalu pilih Create Change Set for Current Stack.
-
Unggah template Anda yang diperbarui, lalu lihat perubahan yang tercantum di dalamnya AWS CloudFormation. Ini adalah perubahan yang akan dilakukan pada tumpukan. Anda harus melihat sumber daya baru Anda dalam daftar.
-
Pilih Eksekusi.
Untuk mengedit PollForSourceChanges parameter pipeline
penting
Saat Anda membuat pipeline dengan metode ini, PollForSourceChanges
parameter default ke true jika tidak secara eksplisit disetel ke false. 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 menyertakanPollForSourceChanges
dalam definisi pipeline Anda, tambahkan dan atur kefalse
.Mengapa saya membuat perubahan ini? Mengubah
PollForSourceChanges
untukfalse
mematikan pemeriksaan berkala sehingga Anda hanya dapat menggunakan deteksi perubahan berbasis peristiwa.Name: Source Actions: - Name: SourceAction ActionTypeId: Category: Source Owner: AWS Version: 1 Provider: S3 OutputArtifacts: - Name: SourceOutput Configuration: S3Bucket: !Ref SourceBucket S3ObjectKey: !Ref SourceObjectKey
PollForSourceChanges: false
RunOrder: 1
Untuk membuat template kedua untuk sumber daya saluran Amazon S3 Anda CloudTrail
-
Dalam templat terpisah, di bawah
Resources
, gunakanAWS::S3::Bucket
,AWS::S3::BucketPolicy
, danAWS::CloudTrail::Trail
AWS CloudFormation sumber daya untuk memberikan definisi dan jejak bucket sederhana CloudTrail.Mengapa saya membuat perubahan ini? Mengingat batas saat ini lima jalur per akun, CloudTrail jejak harus dibuat dan dikelola secara terpisah. (Lihat Batas di AWS CloudTrail.) Namun, Anda dapat menyertakan banyak bucket Amazon S3 pada satu jalur, sehingga Anda dapat membuat jejak sekali dan kemudian menambahkan bucket Amazon S3 untuk saluran pipa lain seperlunya. Tempelkan berikut ini ke file template sampel kedua Anda.
################################################################################### # Prerequisites: # - S3 SourceBucket and SourceObjectKey must exist ################################################################################### Parameters: SourceObjectKey: Description: 'S3 source artifact' Type: String Default: SampleApp_Linux.zip Resources: AWSCloudTrailBucketPolicy: Type: AWS::S3::BucketPolicy Properties: Bucket: !Ref AWSCloudTrailBucket PolicyDocument: Version: 2012-10-17 Statement: - Sid: AWSCloudTrailAclCheck Effect: Allow Principal: Service: - cloudtrail.amazonaws.com Action: s3:GetBucketAcl Resource: !GetAtt AWSCloudTrailBucket.Arn - Sid: AWSCloudTrailWrite Effect: Allow Principal: Service: - cloudtrail.amazonaws.com Action: s3:PutObject Resource: !Join [ '', [ !GetAtt AWSCloudTrailBucket.Arn, '/AWSLogs/', !Ref 'AWS::AccountId', '/*' ] ] Condition: StringEquals: s3:x-amz-acl: bucket-owner-full-control AWSCloudTrailBucket: Type: AWS::S3::Bucket DeletionPolicy: Retain AwsCloudTrail: DependsOn: - AWSCloudTrailBucketPolicy Type: AWS::CloudTrail::Trail Properties: S3BucketName: !Ref AWSCloudTrailBucket EventSelectors: - DataResources: - Type: AWS::S3::Object Values: - !Join [ '', [ !ImportValue SourceBucketARN, '/', !Ref SourceObjectKey ] ] ReadWriteType: WriteOnly IncludeManagementEvents: false IncludeGlobalServiceEvents: true IsLogging: true IsMultiRegionTrail: true ...