Cree una EventBridge regla para una CodeCommit fuente (AWS 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.

Cree una EventBridge regla para una CodeCommit fuente (AWS CloudFormation plantilla)

Para usarla AWS CloudFormation para crear una regla, actualiza tu plantilla como se muestra aquí.

Para actualizar tu AWS CloudFormation plantilla de canalización y crear una EventBridge regla
  1. En la plantilla, enResources, usa el AWS::IAM::Role AWS CloudFormation recurso para configurar el IAM rol que permite a tu evento iniciar 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? Añadir el AWS::IAM::Role recurso AWS CloudFormation permite crear permisos para EventBridge. Este recurso se añade a tu AWS CloudFormation pila.

    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: !Join [ '', [ 'arn:aws:codepipeline:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':', !Ref 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::Join": [ "", [ "arn:aws:codepipeline:", { "Ref": "AWS::Region" }, ":", { "Ref": "AWS::AccountId" }, ":", { "Ref": "AppPipeline" } ] ...
  2. En la plantilla, enResources, usa el AWS::Events::Rule AWS CloudFormation recurso para agregar una EventBridge regla. Este patrón de eventos crea un evento que monitoriza la introducción de cambios 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? Añadir el AWS::Events::Rule recurso permite AWS CloudFormation crear el evento. Este recurso se añade a tu AWS CloudFormation pila.

    YAML
    EventRule: Type: AWS::Events::Rule Properties: EventPattern: source: - aws.codecommit detail-type: - 'CodeCommit Repository State Change' resources: - !Join [ '', [ 'arn:aws:codecommit:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':', !Ref RepositoryName ] ] detail: event: - referenceCreated - referenceUpdated referenceType: - branch referenceName: - main Targets: - Arn: !Join [ '', [ 'arn:aws:codepipeline:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':', !Ref AppPipeline ] ] RoleArn: !GetAtt EventRole.Arn Id: codepipeline-AppPipeline
    JSON
    "EventRule": { "Type": "AWS::Events::Rule", "Properties": { "EventPattern": { "source": [ "aws.codecommit" ], "detail-type": [ "CodeCommit Repository State Change" ], "resources": [ { "Fn::Join": [ "", [ "arn:aws:codecommit:", { "Ref": "AWS::Region" }, ":", { "Ref": "AWS::AccountId" }, ":", { "Ref": "RepositoryName" } ] ] } ], "detail": { "event": [ "referenceCreated", "referenceUpdated" ], "referenceType": [ "branch" ], "referenceName": [ "main" ] } }, "Targets": [ { "Arn": { "Fn::Join": [ "", [ "arn:aws:codepipeline:", { "Ref": "AWS::Region" }, ":", { "Ref": "AWS::AccountId" }, ":", { "Ref": "AppPipeline" } ] ] }, "RoleArn": { "Fn::GetAtt": [ "EventRole", "Arn" ] }, "Id": "codepipeline-AppPipeline" } ] } },
  3. Guarde la plantilla actualizada en el equipo local y luego abra la consola de AWS CloudFormation .

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

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

  6. Elija Ejecutar.

Para editar el PollForSourceChanges parámetro de tu canalización
importante

En muchos casos, el parámetro PollForSourceChanges es true de forma predeterminada al crear una canalización. Al añadir la detección de cambios basada en eventos, debe añadir el parámetro a la salida y establecerlo en false para deshabilitar el sondeo. De lo contrario, la canalización comienza dos veces para un único cambio en el código fuente. Para obtener más información, consulte Ajustes válidos para el PollForSourceChanges parámetro.

  • En la plantilla, cambie PollForSourceChanges por false. Si no ha incluido PollForSourceChanges en la definición de la canalización, añádalo y establézcalo en false.

    ¿Por qué voy a hacer este cambio? Al cambiar este parámetro a false, se desactivan las comprobaciones periódicas, por lo que únicamente puede utilizar la detección de cambios basada en eventos.

    YAML
    Name: Source Actions: - Name: SourceAction ActionTypeId: Category: Source Owner: AWS Version: 1 Provider: CodeCommit OutputArtifacts: - Name: SourceOutput Configuration: BranchName: !Ref BranchName RepositoryName: !Ref RepositoryName PollForSourceChanges: false RunOrder: 1
    JSON
    { "Name": "Source", "Actions": [ { "Name": "SourceAction", "ActionTypeId": { "Category": "Source", "Owner": "AWS", "Version": 1, "Provider": "CodeCommit" }, "OutputArtifacts": [ { "Name": "SourceOutput" } ], "Configuration": { "BranchName": { "Ref": "BranchName" }, "RepositoryName": { "Ref": "RepositoryName" }, "PollForSourceChanges": false }, "RunOrder": 1 } ] },