Crear una EventBridge regla para una fuente de Amazon ECR (CLI) - AWS CodePipeline

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Crear una EventBridge regla para una fuente de Amazon ECR (CLI)

Ejecute el comando put-rule especificando lo siguiente:

  • Un nombre que identifique de forma inequívoca la regla que está creando. Este nombre debe ser único en todas las canalizaciones que cree CodePipeline asociadas a su AWS cuenta.

  • El patrón de eventos para el origen y los campos de detalles utilizados por la regla. Para obtener más información, consulta Amazon EventBridge y Event Patterns.

Para crear una EventBridge regla con Amazon ECR como origen y destino CodePipeline del evento
  1. Añada los permisos EventBridge para utilizarlos CodePipeline para invocar la regla. Para obtener más información, consulta Uso de políticas basadas en recursos para Amazon. EventBridge

    1. Utilice el siguiente ejemplo para crear la política de confianza que permita EventBridge asumir la función de servicio. Ponga un nombre a la política de confianza trustpolicyforEB.json.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. Utilice el comando para crear el rol Role-for-MyRule y asocie la política de confianza.

      aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json
    3. Cree el JSON de la política de permisos, tal y como se muestra en este ejemplo para la canalización denominada MyFirstPipeline. Ponga un nombre a la política de permisos permissionspolicyforEB.json.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:StartPipelineExecution" ], "Resource": [ "arn:aws:codepipeline:us-west-2:80398EXAMPLE:MyFirstPipeline" ] } ] }
    4. Utilice el siguiente comando para asociar la política de permisos CodePipeline-Permissions-Policy-for-EB al rol Role-for-MyRule.

      ¿Por qué voy a hacer este cambio? Al agregar esta política al rol, se crean permisos para EventBridge.

      aws iam put-role-policy --role-name Role-for-MyRule --policy-name CodePipeline-Permissions-Policy-For-EB --policy-document file://permissionspolicyforEB.json
  2. Llame al comando put-rule e incluya los parámetros --name, --event-pattern y --role-arn.

    ¿Por qué voy a hacer este cambio? Debe crear un evento con una regla que especifique cómo se debe hacer una inserción de imagen, y un objetivo que indique el nombre de la canalización que va a iniciar el evento.

    El siguiente comando de ejemplo crea una regla llamada 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 ver el patrón de eventos completo compatible con los eventos de Amazon ECR, consulte Amazon ECR Events o EventBridge Amazon Elastic Container Registry Events.

  3. Para añadirlo CodePipeline como destino, put-targets ejecute el comando e incluya los siguientes parámetros:

    • El parámetro --rule se usa con el rule_name que creó con el comando put-rule.

    • El parámetro --targets se usa con el Id del destino de la lista de destinos y el ARN de la canalización de destino.

    El siguiente comando de muestra especifica que, para la regla denominada MyECRRepoRule, el destino Id se compone del número uno, lo que indica que, en lo que puede ser una lista de destinos de la regla, se trata del destino 1. El comando de ejemplo también especifica un Arn de ejemplo para la canalización y el RoleArn de ejemplo para la regla. La canalización se inicia cuando se produce algún cambio en el repositorio.

    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