Crear una EventBridge regla para una fuente de Amazon ECR (CloudFormation plantilla) - 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 (CloudFormation plantilla)

CloudFormation Para crear una regla, utilice el fragmento de plantilla que se muestra aquí.

Para actualizar tu CloudFormation plantilla de canalización y crear una regla EventBridge
  1. En la plantilla, en la secciónResources, usa el AWS::IAM::Role CloudFormation recurso para configurar la función de IAM que permite que tu evento inicie tu canalización. Esta entrada crea un rol que utiliza dos políticas:

    • La primera política permite asumir el rol.

    • La segunda política concede permisos para iniciar la canalización.

    ¿Por qué voy a hacer este cambio? Debes crear una función que pueda ser asumida EventBridge para iniciar una ejecución en nuestra canalización.

    YAML
    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: !Sub arn:aws:codepipeline:${AWS::Region}:${AWS::AccountId}:${AppPipeline}
    JSON
    { "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": { "Fn::Sub": "arn:aws:codepipeline:${AWS::Region}:${AWS::AccountId}:${AppPipeline}" } } ] } } ] } } } ...
  2. En la plantilla, enResources, utilice el AWS::Events::Rule CloudFormation recurso para añadir una EventBridge regla para la fuente de Amazon ECR. Este patrón de eventos crea un evento que monitoriza las confirmaciones en su repositorio. Cuando EventBridge detecta un cambio en el estado del repositorio, la regla se invoca StartPipelineExecution en la canalización de destino.

    ¿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.

    Este fragmento utiliza una imagen denominada eb-test con una etiqueta latest.

    YAML
    EventRule: Type: 'AWS::Events::Rule' Properties: EventPattern: detail: action-type: [PUSH] image-tag: [latest] repository-name: [eb-test] result: [SUCCESS] detail-type: [ECR Image Action] source: [aws.ecr] Targets: - Arn: !Sub arn:aws:codepipeline:${AWS::Region}:${AWS::AccountId}:${AppPipeline} RoleArn: !GetAtt - EventRole - Arn Id: codepipeline-AppPipeline
    JSON
    { "EventRule": { "Type": "AWS::Events::Rule", "Properties": { "EventPattern": { "detail": { "action-type": [ "PUSH" ], "image-tag": [ "latest" ], "repository-name": [ "eb-test" ], "result": [ "SUCCESS" ] }, "detail-type": [ "ECR Image Action" ], "source": [ "aws.ecr" ] }, "Targets": [ { "Arn": { "Fn::Sub": "arn:aws:codepipeline:${AWS::Region}:${AWS::AccountId}:${AppPipeline}" }, "RoleArn": { "Fn::GetAtt": [ "EventRole", "Arn" ] }, "Id": "codepipeline-AppPipeline" } ] } } },
    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. (Opcional) Para configurar un transformador de entrada con anulaciones de origen para un ID de imagen específico, utilice el siguiente fragmento de código YAML. En el siguiente ejemplo, se configura una anulación donde:

    • actionName (Source en este ejemplo) es el valor dinámico, que se define en la creación de la canalización, no se deriva del evento de origen.

    • revisionType (IMAGE_DIGEST en este ejemplo) es el valor dinámico, que se define en la creación de la canalización, no se deriva del evento de origen.

    • En este ejemplorevisionValue, < revisionValue > se deriva de la variable de evento de origen.

    --- Rule: my-rule Targets: - Id: MyTargetId Arn: ARN InputTransformer: InputPathsMap: revisionValue: "$.detail.image-digest" InputTemplate: sourceRevisions: actionName: Source revisionType: IMAGE_DIGEST revisionValue: '<revisionValue>'
  4. Guarde la plantilla actualizada en el equipo local y luego abra la consola de CloudFormation .

  5. Seleccione la pila y luego elija Create Change Set for Current Stack (Crear conjuntos de cambios para la pila actual).

  6. Cargue la plantilla y, a continuación, consulte los cambios indicados en CloudFormation. Estos son los cambios que se realizan en la pila. Debería ver los nuevos recursos en la lista.

  7. Elija Ejecutar.