View a markdown version of this page

Verwendung EventBridge mit Image Builder-Pipelines - EC2 Image Builder

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.

Verwendung EventBridge mit Image Builder-Pipelines

AWS und Partnerdienste streamen Ereignisse nahezu in Echtzeit an EventBridge Amazon-Eventbusse. Sie können auch Ihre eigenen benutzerdefinierten Ereignisse senden. Event-Busse verwenden Regeln, um jedes Ereignis an ein oder mehrere Ziele weiterzuleiten.

Image Builder funktioniert EventBridge in zwei unabhängigen Richtungen:

  • Starten Sie einen Pipeline-Build anhand einer Regel. Sie können eine Image Builder-Pipeline als Regelziel festlegen, sodass die Pipeline EventBridge ausgeführt wird, wenn ein Ereignis der Regel entspricht oder wenn ein Zeitplan ausgelöst wird. Siehe Einen Pipeline-Build nach einem Zeitplan auslösen und Einen Pipeline-Build anhand eines Ereignismusters auslösen.

  • Reagieren Sie auf Ereignisse, die Image Builder sendet. Image Builder veröffentlicht Ereignisse auf dem Standardereignisbus, wenn signifikante Änderungen auftreten, z. B. wenn ein Bild zu CVEs wird AVAILABLE oder ein Scan CVEs erkennt. Sie können diese Ereignisse einer Regel zuordnen und sie an Ziele wie eine Lambda-Funktion oder ein Amazon SNS-Thema weiterleiten, um Ihre eigenen Automatisierungen zu starten. Siehe Reagieren Sie auf Ereignisse, die Image Builder sendet.

Weitere Informationen zu den Ereignissen, die Image Builder sendet, und zu den Feldern in jedem Ereignis finden Sie unter. Ereignisnachrichten, die Image Builder sendet

Anmerkung

Event-Busse sind Region-specific. Eine Regel und die von ihr aufgerufenen Ressourcen befinden sich in der Regel in derselben Region. Um regionsübergreifend zu routen, zielen Sie auf einen Event-Bus in der Zielregion ab. Image Builder veröffentlicht seine Ereignisse auf dem Standard-Event-Bus in der Region, in der der Build ausgeführt wird.

EventBridge Bedingungen

Die folgenden Begriffe helfen Ihnen zu verstehen, wie die EventBridge Integration in Ihre Image Builder-Pipelines funktioniert.

Veranstaltung

Beschreibt eine Änderung in einer Umgebung, die sich auf eine oder mehrere Anwendungsressourcen auswirken kann. Bei der Umgebung kann es sich um eine AWS Umgebung, einen SaaS-Partnerdienst oder eine Anwendung oder eine Ihrer Anwendungen oder Dienste handeln. Sie können auch geplante Ereignisse auf einer Zeitleiste einrichten.

Ereignisbus

Eine Pipeline, die Ereignisdaten von Anwendungen und Diensten empfängt.

Quelle

Der Dienst oder die Anwendung, die das Ereignis an den Event-Bus gesendet hat.

Target

Eine Ressource oder ein Endpunkt, der EventBridge aufgerufen wird, wenn er einer Regel entspricht, und Daten aus dem Ereignis an das Ziel übermittelt.

Regel

Eine Regel ordnet eintreffende Ereignisse zu und leitet diese zur Verarbeitung an Ziele weiter. Eine einzelne Regel kann ein Ereignis an mehrere Ziele senden, die dann parallel ausgeführt werden können. Regeln basieren entweder auf einem Ereignismuster oder einem Zeitplan.

Muster

Ein Ereignismuster definiert die Ereignisstruktur und die Felder, auf die eine Regel zutrifft, um die Zielaktion auszulösen.

Plan

Zeitplanregeln führen eine Aktion nach einem Zeitplan aus, z. B. das Ausführen einer Image Builder-Pipeline, um ein Image vierteljährlich zu aktualisieren. Es gibt zwei Arten von Zeitplanausdrücken:

  • Cron-Ausdrücke — Erfüllen Sie bestimmte Planungskriterien mithilfe der Cron-Syntax, die einfache Kriterien beschreiben kann, z. B. wöchentlich an einem bestimmten Tag. Sie können auch komplexere Kriterien festlegen, z. B. vierteljährlich am fünften Tag des Monats, zwischen 2 Uhr morgens und 4 Uhr morgens.

  • Ratenausdrücke — Geben Sie ein regelmäßiges Intervall an, in dem das Ziel aufgerufen wird, z. B. alle 12 Stunden.

EventBridge Regeln für Ihre Image Builder-Pipeline anzeigen

Auf der Registerkarte EventBridge Regeln auf der Detailseite der Image Builder Image-Pipelines werden EventBridge Event-Busse angezeigt, auf die Ihr Konto Zugriff hat, sowie die Regeln für den ausgewählten Event-Bus, die für die aktuelle Pipeline gelten. Diese Registerkarte führt auch direkt zur EventBridge Konsole, in der Sie neue Ressourcen erstellen können.

Aktionen, die mit der EventBridge Konsole verknüpft sind
  • Event-Bus erstellen

  • Regel erstellen

Weitere Informationen EventBridge dazu finden Sie in den folgenden Themen im EventBridge Amazon-Benutzerhandbuch.

Einen Pipeline-Build nach einem Zeitplan auslösen

Legen Sie eine Image Builder-Pipeline als Ziel einer EventBridge Zeitplanregel fest, um ein Image in regelmäßigen Abständen zu aktualisieren. Im folgenden Beispiel wird eine Regel erstellt, die alle 90 Tage einen Pipeline-Build startet.

Anmerkung

Eine Pipeline kann auch ihren eigenen integrierten Zeitplan enthalten (einen Cron- oder Rate-Ausdruck, der in der Pipeline gespeichert ist). Dieser Zeitplan wird von Image Builder verwaltet und ist unabhängig von allen EventBridge Regeln:

  • Verwenden Sie den Pipeline-Zeitplan für eine einfache, wiederkehrende Neuerstellung. Es kann auch Builds aufgrund von Abhängigkeitsaktualisierungen abfangen und eine fehlerhafte Pipeline automatisch deaktivieren. Weitere Informationen finden Sie Schedule in der EC2 Image Builder-API-Referenz.

  • Verwenden Sie eine EventBridge Regel, um einen Build anhand eines Ereignismusters zu starten oder um einen Trigger auf mehrere Ziele auszuweiten.

AWS-Managementkonsole
  1. Öffnen Sie die EC2 Image Builder-Konsole unter https://console.aws.amazon.com/imagebuilder/.

  2. Um eine Liste der Image-Pipelines anzuzeigen, die unter Ihrem Konto erstellt wurden, wählen Sie im Navigationsbereich Image-Pipelines aus.

    Anmerkung

    Die Liste der Image-Pipelines enthält einen Indikator für den Typ des Ausgabebilds, das von der Pipeline erstellt wird — AMI oder. Docker

  3. Um Details anzuzeigen oder eine Pipeline zu bearbeiten, wählen Sie den Link Pipeline-Namen. Dadurch wird die Detailansicht für die Pipeline geöffnet.

    Anmerkung

    Sie können auch das Kontrollkästchen neben dem Pipeline-Namen aktivieren und dann Detail anzeigen wählen.

  4. Öffnen Sie den Tab „EventBridge Regeln“.

  5. Behalten Sie den Standard-Event-Bus bei, der im Event-Bus-Bereich vorausgewählt ist.

  6. Wählen Sie Regel erstellen aus. Dadurch gelangen Sie zur Seite „Regel erstellen“ in der EventBridge Amazon-Konsole.

  7. Geben Sie einen Namen und eine Beschreibung für die Regel ein. Der Regelname muss innerhalb des Event-Busses für die ausgewählte Region eindeutig sein.

  8. Wählen Sie im Bereich „Muster definieren“ die Option „Zeitplan“. Dadurch wird das Bedienfeld erweitert, wobei für jede Option die Option „Festpreis“ ausgewählt ist.

  9. Geben Sie 90 in das erste Feld ein und wählen Sie in der Dropdownliste Tage aus.

  10. Führen Sie im Bereich „Ziele auswählen“ die folgenden Aktionen aus:

    1. Wählen Sie EC2 Image Builder aus der Dropdownliste Ziel aus.

    2. Um die Regel auf eine Image Builder-Pipeline anzuwenden, wählen Sie die Zielpipeline aus der Dropdownliste Image Pipeline aus.

    3. EventBridge benötigt die Erlaubnis, einen Build für die ausgewählte Pipeline zu initiieren. Behalten Sie für dieses Beispiel die Standardoption „Neue Rolle für diese bestimmte Ressource erstellen“ bei.

    4. Wählen Sie Add target (Ziel hinzufügen) aus.

  11. Wählen Sie Create (Erstellen) aus.

Anmerkung

Die aktuelle EventBridge Konsole kann über den EventBridge Scheduler Zeitpläne erstellen, und die genauen Bezeichnungen und Schritte können sich im Laufe der Zeit ändern. Das verlinkte EventBridge Amazon-Benutzerhandbuch ist maßgebend für die aktuelle Benutzererfahrung mit der Konsole.

AWS CLI

Mit diesen Schritten wird eine Zeitplanregel erstellt, die alle 90 Tage einen Pipeline-Build startet. EventBridge benötigt eine IAM-Rolle, die es annehmen kann, um Ihre Pipeline imagebuilder:StartImagePipelineExecution aufzurufen.

  1. Erstellen Sie eine Regel mit einem Ratenausdruck:

    aws events put-rule \ --name refresh-image-every-90-days \ --schedule-expression "rate(90 days)"
  2. Erstellen Sie mit dieser Vertrauensrichtlinie eine IAM-Rolle, die Folgendes übernehmen EventBridge kann:

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" }] }

    Fügen Sie eine Berechtigungsrichtlinie hinzu, die den Start der Pipeline ermöglicht:

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "imagebuilder:StartImagePipelineExecution", "Resource": "arn:aws:imagebuilder:us-west-2:111122223333:image-pipeline/my-pipeline" }] }
  3. Fügen Sie die Pipeline als Ziel der Regel hinzu und verweisen Sie dabei auf die Rolle aus dem vorherigen Schritt:

    aws events put-targets \ --rule refresh-image-every-90-days \ --targets '[{ "Id": "1", "Arn": "arn:aws:imagebuilder:us-west-2:111122223333:image-pipeline/my-pipeline", "RoleArn": "arn:aws:iam::111122223333:role/EventBridgeImageBuilderRole" }]'
  4. Bestätigen Sie, dass das Ziel angehängt ist:

    aws events list-targets-by-rule --rule refresh-image-every-90-days
Anmerkung

Weitere Informationen zu Einstellungen für Regeln für Preisausdrücke, die in diesem Beispiel nicht behandelt werden, finden Sie https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule-schedule.html#eb-rate-expressions im EventBridge Amazon-Benutzerhandbuch unter Bewertungsausdrücke.

Einen Pipeline-Build anhand eines Ereignismusters auslösen

Anstatt eines Zeitplans können Sie einen Pipeline-Build starten, wenn ein Ereignis einem Muster entspricht. Erstellen Sie eine Regel mit einem Ereignismuster und fügen Sie dann Ihre Pipeline als Ziel hinzu (mit derselben IAM-Rolle, wie unter beschriebenEinen Pipeline-Build nach einem Zeitplan auslösen).

Im folgenden Beispiel wird ein Build immer dann gestartet, wenn ein bestimmtes Basis-Image erstellt wird, AVAILABLE z. B. um einen abhängigen Image-Build zu verketten, nachdem das Basis-Image abgeschlossen ist. Das resources Präfix beschränkt die Regel auf das Basis-Image, sodass sie nur mit diesem Image und nicht mit der eigenen Ausgabe der abhängigen Pipeline übereinstimmt:

{ "source": ["aws.imagebuilder"], "detail-type": ["EC2 Image Builder Image State Change"], "detail": { "state": { "status": ["AVAILABLE"] } }, "resources": [{ "prefix": "arn:aws:imagebuilder:us-west-2:111122223333:image/my-base-image/" }] }
Wichtig

Passen Sie das Ereignismuster auf das Basis-Image an, wie das resources Präfix in diesem Beispiel zeigt. Ein Muster, das mit jedem AVAILABLE Bild im Konto übereinstimmt, entspricht auch dem eigenen Ausgabe-Image der abhängigen Pipeline, wodurch die Pipeline erneut gestartet wird und eine endlose Build-Schleife entstehen kann. Filtern Sie nach dem spezifischen Namen des Basis-Images oder dem ARN-Präfix, sodass die Regel nur dem gewünschten Image entspricht.

AWS-Managementkonsole
  1. Öffnen Sie die EventBridge Amazon-Konsole unter https://console.aws.amazon.com/events/.

  2. Wählen Sie Regeln und dann Regel erstellen aus. Behalten Sie den Standard-Event-Bus bei.

  3. Geben Sie einen Namen und eine Beschreibung ein. Wählen Sie unter Regeltyp die Option Regel mit einem Ereignismuster aus.

  4. Wählen Sie für die Ereignisquelle Andere aus und fügen Sie das obige Eventmuster in das Feld Eventmuster ein.

  5. Wählen Sie im Bereich „Ziele auswählen“ EC2 Image Builder aus der Dropdownliste „Ziel“ und dann die zu erstellende Pipeline aus der Dropdownliste „Image-Pipeline“ aus.

  6. EventBridge benötigt eine Genehmigung, um die Pipeline zu starten. Behalten Sie die Standardoption „Eine neue Rolle für diese spezielle Ressource erstellen“ bei.

  7. Wählen Sie Regel erstellen aus.

AWS CLI

Erstellen Sie die Regel und fügen Sie die Pipeline als Ziel hinzu:

aws events put-rule \ --name rebuild-on-base-available \ --event-pattern '{"source":["aws.imagebuilder"],"detail-type":["EC2 Image Builder Image State Change"],"detail":{"state":{"status":["AVAILABLE"]}},"resources":[{"prefix":"arn:aws:imagebuilder:us-west-2:111122223333:image/my-base-image/"}]}' aws events put-targets \ --rule rebuild-on-base-available \ --targets '[{"Id":"1","Arn":"arn:aws:imagebuilder:us-west-2:111122223333:image-pipeline/dependent-pipeline","RoleArn":"arn:aws:iam::111122223333:role/EventBridgeImageBuilderRole"}]'

Informationen zu den Ereignissen, die Sie zuordnen können, und deren Felder finden Sie unterEreignisnachrichten, die Image Builder sendet.

Reagieren Sie auf Ereignisse, die Image Builder sendet

Image Builder veröffentlicht Ereignisse auf dem Standard-Event-Bus, wenn Ihre Ressourcen wichtige Punkte erreichen — zum Beispiel, wenn ein Image den Status ändert, ein Scan abgeschlossen ist, ein Workflow-Schritt zur Eingabe unterbrochen wird oder eine Pipeline automatisch deaktiviert wird. Sie können diese Ereignisse einer Regel zuordnen und sie an ein Ziel weiterleiten, um Ihre eigene Automatisierung zu starten. Zu den gängigen Mustern gehören:

  • Informieren Sie ein Team über ein Amazon SNS-Thema, wenn aus einem Bild AVAILABLE oder FAILED wird.

  • Rufen Sie eine Lambda-Funktion auf, um ein neues AMI in einem Parameterspeicher zu registrieren, externe Konformitätstests zu starten oder eine Bereitstellungspipeline zu aktualisieren.

  • Warnmeldung bei Sicherheitsergebnissen, wenn bei einem Scan kritische CVEs gemeldet werden.

  • Steuern Sie einen Genehmigungsworkflow, wenn ein WaitForAction Workflow-Schritt einen Build unterbricht.

Um auf ein von Image Builder gesendetes Ereignis zu reagieren, erstellen Sie eine Regel, deren Ereignismuster mit dem Ereignis source (aws.imagebuilder) übereinstimmt und detail-type optional die darin enthaltenen Felder einschränkt. detail Fügen Sie dann das Ziel hinzu, auf dem Ihre Automatisierung ausgeführt wird.

Beispiel: Bei Fertigstellung des Images benachrichtigen (AVAILABLEoderFAILED)

{ "source": ["aws.imagebuilder"], "detail-type": ["EC2 Image Builder Image State Change"], "detail": { "state": { "status": ["AVAILABLE", "FAILED"] } } }

Beispiel: Nur warnen, wenn bei einem Scan kritische CVEs gefunden werden

Verwenden Sie einen numerischen Matcher, damit bei sauberen Scans die Regel nicht ausgelöst wird:

{ "source": ["aws.imagebuilder"], "detail-type": ["EC2 Image Builder CVE Detected"], "detail": { "finding-severity-counts": { "critical": [{ "numeric": [">", 0] }] } } }
AWS-Managementkonsole
  1. Öffnen Sie die EventBridge Amazon-Konsole unter. https://console.aws.amazon.com/events/

  2. Wählen Sie Regeln und dann Regel erstellen aus. Behalten Sie den Standard-Event-Bus bei.

  3. Geben Sie einen Namen und eine Beschreibung ein. Wählen Sie unter Regeltyp die Option Regel mit einem Ereignismuster aus.

  4. Wählen Sie für die Ereignisquelle Andere aus und fügen Sie eines der obigen Ereignismuster in das Feld Ereignismuster ein.

  5. Wählen Sie Ihr Ziel — zum Beispiel ein Amazon SNS-Thema oder eine Lambda-Funktion — und vervollständigen Sie die Zieleinstellungen.

  6. Wählen Sie Regel erstellen aus.

AWS CLI

Erstellen Sie die Regel und senden Sie passende Ereignisse an ein Amazon SNS-Thema:

aws events put-rule \ --name image-available-or-failed \ --event-pattern '{"source":["aws.imagebuilder"],"detail-type":["EC2 Image Builder Image State Change"],"detail":{"state":{"status":["AVAILABLE","FAILED"]}}}' aws events put-targets \ --rule image-available-or-failed \ --targets '[{"Id":"1","Arn":"arn:aws:sns:us-west-2:111122223333:image-status"}]'

EventBridge benötigt außerdem die Erlaubnis, Ereignisse an Ihr Ziel zu senden. Weitere Informationen zu den Berechtigungen, die jeder Zieltyp benötigt, finden Sie im Amazon-Benutzerhandbuch unter Berechtigungen für das Senden von Ereignissen an Ziele und Verwenden ressourcenbasierter Richtlinien für Amazon EventBridge EventBridge.

Anmerkung

Wenn Sie dem EC2 Image Builder Workflow Step Waiting Ereignis entsprechen, kann Ihr Zielpublikum SendWorkflowStepAction mit der Option workflow-step-execution-id aus dem Ereignis und einem action von oder anrufen. RESUME STOP Siehe WaitForAction.