Criar uma regra do EventBridge para uma origem do Amazon ECR (CLI)
Use o comando put-rule, especificando:
-
Um nome que identifique de forma exclusiva a regra que você está criando. Esse nome deve ser exclusivo em todos os pipelines criados com o CodePipeline associado à sua conta da AWS.
-
O padrão de evento para a origem e os campos detalhados usados pela regra. Para obter mais informações, consulte Amazon EventBridge e padrões de eventos.
Para criar uma regra do EventBridge com o Amazon ECR como origem do evento e o CodePipeline como destino
-
Adicione permissões para que o EventBridge use o CodePipeline para invocar a regra. Para obter mais informações, consulte Usar políticas baseadas em recursos do Amazon EventBridge.
-
Use o exemplo a seguir para criar a política de confiança que permite ao EventBridge assumir o perfil de serviço. Nomeie a política de confiança
trustpolicyforEB.json. -
Use o comando a seguir para criar a função
Role-for-MyRulee anexar a política de confiança.aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json -
Crie o JSON de política de permissões, conforme mostrado neste exemplo, para o pipeline denominado
MyFirstPipeline. Nomeie a politica de permissõespermissionspolicyforEB.json. -
Use o comando a seguir para anexar a política de permissões
CodePipeline-Permissions-Policy-for-EBà funçãoRole-for-MyRule.Por que estou fazendo essa alteração? A adição dessa política ao perfil cria permissões para o EventBridge.
aws iam put-role-policy --role-name Role-for-MyRule --policy-name CodePipeline-Permissions-Policy-For-EB --policy-document file://permissionspolicyforEB.json
-
-
Use o comando put-rule e inclua os parâmetros
--name,--event-patterne--role-arn.Por que estou fazendo essa alteração? Você deve criar um evento com uma regra que especifique como deve ser feito um envio de imagem por push e um destino que nomeie o pipeline a ser iniciado pelo evento.
O comando de exemplo a seguir cria uma regra chamada
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"nota
Para visualizar o padrão completo de evento compatível com os eventos do Amazon ECR, consulte Eventos do Amazon ECR e EventBridge ou Eventos do Amazon Elastic Container Registry.
-
Para adicionar o CodePipeline como destino, chame o comando put-targets e inclua os seguintes parâmetros:
-
O parâmetro
--ruleé usado comrule_namecriado por meio de put-rule. -
O parâmetro
--targetsé usado com oIdda lista do destino na lista de destinos e oARNdo pipeline de destino.
O exemplo de comando a seguir especifica que, para a regra chamada
MyECRRepoRule, oIddo destino é composto do número um, indicando que, em uma lista de destinos para a regra, esse é o destino 1. O comando de exemplo também especifica um exemploArnpara o pipeline e o exemploRoleArnpara a regra. O pipeline é iniciado quando uma alteração é feita no repositório.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 -
-
(Opcional) Para configurar um transformador de entrada com substituições de origem para um ID de imagem específico, use o JSON a seguir no comando da CLI. O exemplo a seguir configura uma substituição na qual:
-
O
actionName,Sourceneste exemplo, é o valor dinâmico, definido na criação do pipeline, não derivado do evento de origem. -
O
revisionType,IMAGE_DIGESTneste exemplo, é o valor dinâmico, definido na criação do pipeline, não derivado do evento de origem. -
O
revisionValue, <RevisionValue> neste exemplo, deriva da variável do evento de origem.
{ "Rule": "my-rule", "Targets": [ { "Id": "MyTargetId", "Arn": "ARN", "InputTransformer": { "InputPathsMap": { "revisionValue": "$.detail.image-digest" }, "InputTemplate": { "sourceRevisions": [ { "actionName": "Source", "revisionType": "IMAGE_DIGEST", "revisionValue": "<revisionValue>" } ] } } } ] } -