View a markdown version of this page

Erstellen Sie eine EventBridge Regel für eine Amazon ECR-Quelle (CloudFormation Vorlage) - AWS CodePipeline

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erstellen Sie eine EventBridge Regel für eine Amazon ECR-Quelle (CloudFormation Vorlage)

Um eine Regel CloudFormation zu erstellen, verwenden Sie das Vorlagen-Snippet wie hier gezeigt.

Um Ihre Pipeline zu aktualisieren CloudFormation Vorlage und EventBridge Regel erstellen
  1. Verwenden Sie in der Vorlage unter die AWS::IAM::Role CloudFormation RessourceResources, um die IAM-Rolle zu konfigurieren, mit der Ihre Veranstaltung Ihre Pipeline starten kann. Dieser Eintrag erstellt eine Rolle mit zwei Richtlinien:

    • Die erste Richtlinie ermöglicht die Übernahme der Rolle.

    • Die zweite Richtlinie stellt Berechtigungen zum Starten der Pipeline bereit.

    Warum nehme ich diese Änderung vor? Sie müssen eine Rolle erstellen, die von übernommen werden kann, EventBridge um eine Ausführung in unserer Pipeline zu starten.

    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. Verwenden Sie in der Vorlage unter die AWS::Events::Rule CloudFormation RessourceResources, um eine EventBridge Regel für die Amazon ECR-Quelle hinzuzufügen. Dieses Ereignismuster erzeugt ein Ereignis, das die Commits in Ihrem Repository überwacht. Wenn eine Statusänderung des Repositorys EventBridge erkannt wird, wird die Regel in Ihrer Zielpipeline aufgerufenStartPipelineExecution.

    Warum nehme ich diese Änderung vor? Sie müssen ein Ereignis mit einer Regel erstellen, die festlegt, wie ein Image-Push ausgeführt werden muss, und einem Ziel, das die Pipeline benennt, die durch das Ereignis gestartet werden soll.

    Dieses Snippet verwendet ein Bild mit dem Namen eb-test und dem Tag 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" } ] } } },
    Anmerkung

    Das vollständige Ereignismuster, das für Amazon ECR-Ereignisse unterstützt wird, finden Sie unter Amazon ECR-Ereignisse EventBridge und/oder Amazon Elastic Container Registry Events.

  3. (Optional) Verwenden Sie den folgenden YAML-Snippet, um einen Eingangstransformator mit Quellüberschreibungen für eine bestimmte Image-ID zu konfigurieren. Im folgenden Beispiel wird eine Überschreibung konfiguriert, bei der:

    • SourceIn diesem Beispiel ist der actionName dynamische Wert, der bei der Pipelineerstellung definiert und nicht aus dem Quellereignis abgeleitet wurde.

    • IMAGE_DIGESTIn diesem Beispiel ist der revisionType dynamische Wert, der bei der Pipelineerstellung definiert und nicht vom Quellereignis abgeleitet wurde.

    • In diesem Beispiel wird < revisionValue > von der Quellereignisvariablen abgeleitet. revisionValue

    --- Rule: my-rule Targets: - Id: MyTargetId Arn: ARN InputTransformer: InputPathsMap: revisionValue: "$.detail.image-digest" InputTemplate: sourceRevisions: actionName: Source revisionType: IMAGE_DIGEST revisionValue: '<revisionValue>'
  4. Speichern Sie die aktualisierte Vorlage auf Ihrem lokalen Computer und öffnen Sie die CloudFormation -Konsole.

  5. Wählen Sie Ihren Stack aus und klicken Sie auf Create Change Set for Current Stack (Änderungssatz für laufenden Stack erstellen).

  6. Laden Sie die Vorlage hoch und zeigen Sie dann die in CloudFormation aufgeführten Änderungen an. Dies sind die Änderungen, die am Stack vorgenommen werden sollen. Ihre neuen Ressourcen sollten in der Liste angezeigt werden.

  7. Wählen Sie Ausführen.