Create an EventBridge rule for an Amazon ECR source (CLI)
Call the put-rule command, specifying:
-
A name that uniquely identifies the rule you are creating. This name must be unique across all of the pipelines you create with CodePipeline associated with your Amazon account.
-
The event pattern for the source and detail fields used by the rule. For more information, see Amazon EventBridge and Event Patterns.
To create an EventBridge rule with Amazon ECR as the event source and CodePipeline as the target
-
Add permissions for EventBridge to use CodePipeline to invoke the rule. For more information, see Using resource-based policies for Amazon EventBridge.
-
Use the following sample to create the trust policy that allows EventBridge to assume the service role. Name the trust policy
trustpolicyforEB.json
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
Use the following command to create the
Role-for-MyRule
role and attach the trust policy.aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json
-
Create the permissions policy JSON, as shown in this sample, for the pipeline named
MyFirstPipeline
. Name the permissions policypermissionspolicyforEB.json
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:StartPipelineExecution" ], "Resource": [ "arn:aws:codepipeline:us-west-2:80398EXAMPLE:MyFirstPipeline" ] } ] }
-
Use the following command to attach the
CodePipeline-Permissions-Policy-for-EB
permissions policy to theRole-for-MyRule
role.Why am I making this change? Adding this policy to the role creates permissions for EventBridge.
aws iam put-role-policy --role-name Role-for-MyRule --policy-name CodePipeline-Permissions-Policy-For-EB --policy-document file://permissionspolicyforEB.json
-
-
Call the put-rule command and include the
--name
,--event-pattern
, and--role-arn
parameters.Why am I making this change? You must create an event with a rule that specifies how an image push must be made, and a target that names the pipeline to be started by the event.
The following sample command creates a rule called
MyECRRepoRule
.aws events put-rule --name "MyECRRepoRule" --event-pattern "{\"detail-type\":[\"ECR Image Action\"],\"source\":[\"aws.ecr\"],\"detail\":{\"action-type\":[\"PUSH\"],\"image-tag\":[\"latest\"],\"repository-name\":[\"eb-test\"],\"result\":[\"SUCCESS\"]}}}" --role-arn "arn:aws:iam::
ACCOUNT_ID
:role/Role-for-MyRule"Note
To view the full event pattern supported for Amazon ECR events, see Amazon ECR Events and EventBridge or Amazon Elastic Container Registry Events.
-
To add CodePipeline as a target, call the put-targets command and include the following parameters:
-
The
--rule
parameter is used with therule_name
you created by using put-rule. -
The
--targets
parameter is used with the listId
of the target in the list of targets and theARN
of the target pipeline.
The following sample command specifies that for the rule called
MyECRRepoRule
, the targetId
is composed of the number one, indicating that in a list of targets for the rule, this is target 1. The sample command also specifies an exampleArn
for the pipeline and the exampleRoleArn
for the rule. The pipeline starts when something changes in the repository.aws events put-targets --rule MyECRRepoRule --targets Id=1,Arn=arn:aws:codepipeline:us-west-2:80398EXAMPLE:TestPipeline,RoleArn=arn:aws:iam::80398EXAMPLE:role/Role-for-MyRule
-