Create an EventBridge rule for an Amazon S3 source (Amazon CloudFormation template)
To use Amazon CloudFormation to create a rule, update your template as shown here.
To create an EventBridge rule with Amazon S3 as the event source and CodePipeline as the target and apply the permissions policy
-
In the template, under
Resources
, use theAWS::IAM::Role
Amazon CloudFormation resource to configure the IAM role that allows your event to start your pipeline. This entry creates a role that uses two policies:-
The first policy allows the role to be assumed.
-
The second policy provides permissions to start the pipeline.
Why am I making this change? Adding
AWS::IAM::Role
resource enables Amazon CloudFormation to create permissions for EventBridge. This resource is added to your Amazon CloudFormation stack. -
-
Use the
AWS::Events::Rule
Amazon CloudFormation resource to add an EventBridge rule. This event pattern creates an event that monitorsCopyObject
,PutObject
andCompleteMultipartUpload
on your Amazon S3 source bucket. In addition, include a target of your pipeline. WhenCopyObject
,PutObject
, orCompleteMultipartUpload
occurs, this rule invokesStartPipelineExecution
on your target pipeline.Why am I making this change? Adding the
AWS::Events::Rule
resource enables Amazon CloudFormation to create the event. This resource is added to your Amazon CloudFormation stack. -
Add this snippet to your first template to allow cross-stack functionality:
-
Save your updated template to your local computer, and open the Amazon CloudFormation console.
Choose your stack, and then choose Create Change Set for Current Stack.
Upload your updated template, and then view the changes listed in Amazon CloudFormation. These are the changes that will be made to the stack. You should see your new resources in the list.
Choose Execute.
To edit your pipeline's PollForSourceChanges parameter
Important
When you create a pipeline with this method, the PollForSourceChanges
parameter defaults to true if it is not explicitly set to false. When you add
event-based change detection, you must add the parameter to your output and set it to
false to disable polling. Otherwise, your pipeline starts twice for a single source
change. For details, see Valid settings for the
PollForSourceChanges parameter.
-
In the template, change
PollForSourceChanges
tofalse
. If you did not includePollForSourceChanges
in your pipeline definition, add it and set it tofalse
.Why am I making this change? Changing
PollForSourceChanges
tofalse
turns off periodic checks so you can use event-based change detection only.
To create a second template for your Amazon S3 pipeline's CloudTrail resources
-
In a separate template, under
Resources
, use theAWS::S3::Bucket
,AWS::S3::BucketPolicy
, andAWS::CloudTrail::Trail
Amazon CloudFormation resources to provide a simple bucket definition and trail for CloudTrail.Why am I making this change? Given the current limit of five trails per account, the CloudTrail trail must be created and managed separately. (See Limits in Amazon CloudTrail.) However, you can include many Amazon S3 buckets on a single trail, so you can create the trail once and then add Amazon S3 buckets for other pipelines as necessary. Paste the following into your second sample template file.