View a markdown version of this page

Ereignisquellen für einen benutzerdefinierten Event-Bus - Amazon EventBridge

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.

Ereignisquellen für einen benutzerdefinierten Event-Bus

Eine Eventquelle nimmt Ereignisse von einem AWS Service oder einem SaaS-Partner auf einen Custom Event Bus auf. Sie erstellen ihn mitCreateEventSource, indem Sie beispielsweise aws.s3 einen Zielbus und einen Ausgangspunkt benennen und Ereignisse EventBridge vom Ursprung an den Bus weiterleiten. Ihre eigenen Anwendungen veröffentlichen direkt auf dem Bus, sodass Sie eine Ereignisquelle nur für Ereignisse benötigen, die Sie nicht selbst produzieren.

Die aufgenommenen Ereignisse kommen mit dem Inhaltstyp application/eventbridge+json auf dem Zielbus im EventBridge Umschlag an. Die Ereignisdaten enthalten die Envelope-Felder: source detail-typeaccount,,time, regionresources, unddetail. EventBridge legt auch die aws:DetailType Systemmetadatenfelder aws:Source und aus den Feldern source und des Envelopes festdetail-type. Siehe Eventstruktur: Daten, Metadaten und Systemmetadaten.

Wie werden die Ereignisse verschoben

Wenn Sie eine Eventquelle erstellen, werden eine verwaltete Regel und ein Ziel in Ihrem Konto auf Ihrem Custom Event Bus — Classic EventBridge erstellt. Diese übertragen Ereignisse vom Ursprung auf Ihren Custom Event Bus. Beide werden in Ihrem Konto mit der ManagedBy Einstellung auf angezeigtevents.amazonaws.com. Sie verwalten sie nicht. Wenn Sie die Eventquelle löschen oder sperren, werden sie entfernt. Die Ereignisse erscheinen daher weiterhin in den Metriken von Custom Event Bus — Classic.

AWS Quellen von Service-Ereignissen

Eine AWS Dienstereignisquelle nimmt die Ereignisse auf, die ein AWS Dienst, z. B. aws.s3 oderaws.ec2, für Ihr Konto ausgibt. Standardmäßig kommt jedes Ereignis dieses Dienstes im Bus an. Um das einzugrenzen, fügen Sie einen hinzu. Pattern Im folgenden Beispiel wird eine Ereignisquelle erstellt, die nur Amazon S3 Object Created-Ereignisse zulässt.

aws eventsv2 create-event-source \ --name s3-object-created \ --event-bus-arn arn:aws:events:us-east-1:111122223333:event-busv2/orders/EXAMPLE1234567890abcdef \ --configuration '{"AwsServiceEventsConfiguration":{"AwsService":"aws.s3","Pattern":"{\"detail-type\":[\"Object Created\"]}"}}'

Das Muster der Ereignisquelle entscheidet, was auf den Bus gelangt. Der Filter eines Abonnenten entscheidet, was dieser Abonnent von den Ereignissen empfängt, die durch den Bus fließen; sieheEreignisse für einen Abonnenten filtern. Schreiben Sie das Muster in EventBridge Event Pattern Syntax (EventBridge Amazon-Event-Muster) und EventBridge werten Sie es anhand des Envelopes aus. Lassen Sie den source Schlüssel, die oberste Ebene account und die region Schlüssel aus dem Muster heraus: EventBridge Fügt diese Bedingungen selbst hinzu, aus Ihrem Konto, Ihrer Region und dem von Ihnen ausgewählten Dienst, und lehnt ein Muster ab, das sie bereitstellt.

Ereignisquellen für Partner

Eine Partnerereignisquelle nimmt die Ereignisse auf, die ein SaaS-Partner an Ihr Konto sendet. Bevor Sie eine erstellen, muss der Partner Ihrem Konto eine Partnerereignisquelle anbieten (sieheEmpfangen von Ereignissen von einem SaaS-Partner mit Amazon EventBridge), und diese Quelle muss im PENDING Status sein. Im folgenden Beispiel wird eine Ereignisquelle dafür erstellt.

aws eventsv2 create-event-source \ --name example-partner-events \ --event-bus-arn arn:aws:events:us-east-1:111122223333:event-busv2/orders/EXAMPLE1234567890abcdef \ --configuration '{"PartnerEventsConfiguration":{"PartnerEventSourceArn":"arn:aws:events:us-east-1::event-source/aws.partner/example.com/12345"}}'

Wenn Sie die Ereignisquelle erstellen, EventBridge wird in Ihrem Konto ein verwalteter Partner-Event-Bus (ein benutzerdefinierter Event-Bus — Classic) erstellt, um die Partnerquelle zu aktivieren. Wenn Sie die Eventquelle löschen, wird auch dieser Bus EventBridge gelöscht und die Partnerquelle wird an PENDING zurückgegeben. Um diesen Bus mit einem vom Kunden verwalteten Schlüssel PartnerBusKmsKeyIdentifier zu verschlüsseln, legen Sie einen Schlüssel in Ihrem Konto und Ihrer Region fest. Andernfalls wird ein AWS eigener Schlüssel EventBridge verwendet.

Dead-letter Warteschlange

Um Ereignisse zu erfassen, die den Bus nicht erreichen, stellen Sie OnFailureConfiguration.Arn in Ihrem Konto und Ihrer Region eine Amazon SQS-Standardwarteschlange ein. Eine FIFO-Warteschlange wird abgelehnt. Nachrichten kommen vom events.amazonaws.com Service-Principal in der Warteschlange an, nicht von einer von Ihnen angegebenen Rolle. Gewähren Sie diesem Principal also sqs:SendMessage in der Ressourcenrichtlinie der Warteschlange das Recht.

{ "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-east-1:111122223333:my-event-source-dlq", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" } } }

Eine Partnerereignisquelle sendet unter zwei Quell-ARNs an die Warteschlange: die verwaltete Regel für Zustellungsfehler und den verwalteten Partnerereignisbus für Verschlüsselungsfehler. Eine Richtlinie, die an Bedingungen geknüpft ist, aws:SourceArn muss beides zulassen.

Berechtigungen

Um eine Ereignisquelle auf einem Bus in einem anderen Konto zu erstellen, muss Ihnen der Busbesitzer eine entsprechende Genehmigung gewährenevents:CreateEventSource, und zwar entweder durch eine AWS RAM Aktie (AWSRAMEventBridgeEventBusV2EventSourceAccessoderFullAccess) oder durch eine PutResourcePolicy Erklärung für den Bus. Der events:source Bedingungsschlüssel enthält den AWS Dienstnamen oder den Namen der Partnerereignisquelle, sodass ein Busbesitzer bestimmte Ursprünge zulassen oder verweigern kann. Siehe Einen benutzerdefinierten Event Bus mit anderen Konten teilen.

Um den verwalteten Partner-Event-Bus zu verschlüsseln, benötigt Ihre Identität kms:DescribeKey und kms:Decrypt den Schlüssel, den Sie angebenPartnerBusKmsKeyIdentifier; ohne sie CreateEventSource schlägt dies fehl. AccessDeniedException

{ "Effect": "Allow", "Action": ["kms:DescribeKey", "kms:Decrypt"], "Resource": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }

Wenn ein anderes Konto Eigentümer des Zielbusses ist und ihn mit einem vom Kunden verwalteten Schlüssel verschlüsselt, muss die Richtlinie dieses Schlüssels auch Ihr Konto zulassen. Andernfalls schlagen die Erstellung, Aktualisierung und Beschreibung der Ereignisquelle fehl.

Aufgenommene Ereignisse abonnieren

Um AWS Service- oder Partnerereignisse für einen Abonnenten abzugleichen, filtern Sie nach dem aws:Source System-Metadatenfeld. EventBridge schreibt dieses Feld und kein Veröffentlichungsaufruf kann einen Wert festlegenaws., der mit beginnt. Eine Übereinstimmung mit diesem Wert ist also die einzige Übereinstimmung, die den Ursprung eines Ereignisses belegt. Passen Sie bei AWS Serviceereignissen den Dienstnamen an, bei Partnerereignissen den Namen der Partnerereignisquelle.

{ "Scope": "SYSTEM_METADATA", "Pattern": "{\"aws:Source\":[\"aws.s3\"]}" } { "Scope": "SYSTEM_METADATA", "Pattern": "{\"aws:Source\":[{\"prefix\":\"aws.partner/example.com\"}]}" }

Um nach dem Veranstaltungsinhalt zu filtern, fügen Sie einen DATA Filter hinzu. Der Umschlag enthält den Inhaltdetail.

{ "Scope": "DATA", "Pattern": "{\"detail\":{\"bucket\":{\"name\":[\"amzn-s3-demo-bucket\"]}}}" }

Die Eventdaten enthalten auch source unddetail-type, und jeder Herausgeber kann diese Werte in eine Nutzlast schreiben, sodass der Ursprung nicht bewiesen wird. Die Übereinstimmung erfolgt aws:Source nach Wert, nicht nach Präsenz: Ein direkter PutEvents Anruf beginnt ebenfalls von selbst aws:SourceSource, der niemals mit aws. dem Wert beginnt.

Dauerhaftes Stoppen einer Ereignisquelle

Der Busbesitzer kann die Aufnahme einer Ereignisquelle dauerhaft verhindern, indem er RevokeResource mit ihrem ARN aufruft; sieheEinen Abonnenten oder eine Ereignisquelle sperren. Eine widerrufene Ereignisquelle kann nicht wiederhergestellt werden. Der Widerruf bezieht sich auf die eine Ressource, die Sie benennen. Kombinieren Sie sie daher mit einer Busressourcenrichtlinie, die verhindert, dass dasselbe Konto ein anderes erstellt. Gehen Sie wie folgt vor, um das Konto daran zu hindern, eine Eventquelle auf dem Bus zu erstellen:

{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::444455556666:root" }, "Action": "events:CreateEventSource", "Resource": "arn:aws:events:us-east-1:111122223333:event-busv2/orders/EXAMPLE1234567890abcdef" }

Um einen Ursprung zu blockieren und andere gleichzeitig zuzulassen, setzen Sie die Sperrung auf „Onevents:source“.

{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::444455556666:root" }, "Action": "events:CreateEventSource", "Resource": "arn:aws:events:us-east-1:111122223333:event-busv2/orders/EXAMPLE1234567890abcdef", "Condition": { "StringEquals": { "events:source": "aws.partner/example.com/12345" } } }

Bestätigen Sie, dass die Ereignisse auf den Bus übertragen werden

Zwei Sätze von Metriken zeigen, ob aufgenommene Ereignisse den Custom Event Bus erreichen. Die verwaltete Regel meldet die üblichen Regelmetriken in Ihrem Konto unterAWS/Events. Die Veröffentlichungsmetriken des Zielbusses haben eine EventSource Dimension, die eine Aufschlüsselung des eingehenden Datenverkehrs pro Ereignisquelle ermöglicht; siehe. Beobachtbarkeit für den Custom Event Bus: Metriken, Protokolle und CloudTrail

Wenn ein Abonnent Ereignisse von einem Custom Event Bus auf einen anderen Accounts überträgt, behalten AWS Service- und Partnerereignisse ihre eigenen, aws:DetailType solange die Struktur aws:Source und der Inhalt des Events intakt bleiben. EventBridge autorisiert ihre Ankunft auf dem Zielbus mitevents:PutEvents, daher muss die Ressourcenrichtlinie des Zielbusses diese Aktion der Weiterleitungsrolle gewähren. Ereignisse, die von Ihren veröffentlichten Anwendungen ausgelöst werdenevents:PutRawEvents, sodass für einen Stream, der beide Elemente kombiniert, beide Aktionen erforderlich sind; sieheZiel des Event-Busses: Bus zu Bus.