

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 kontoübergreifende EventBridge Amazon-Verbindung in einer Organisation
<a name="create-cross-account-amazon-eventbridge-connection-organization"></a>

*Sam Wilson und Robert Stone, Amazon Web Services*

## Zusammenfassung
<a name="create-cross-account-amazon-eventbridge-connection-organization-summary"></a>

Große verteilte Systeme verwenden Amazon EventBridge , um Statusänderungen zwischen verschiedenen Amazon Web Services (AWS) -Konten in einer AWS Organizations Organisation zu kommunizieren. EventBridge Ist jedoch in der Regel in der Lage, nur Endgeräte oder Verbraucher in derselben AWS-Konto Umgebung anzusprechen. Die Ausnahme ist ein Event-Bus in einem anderen Konto. Dieser Event-Bus ist ein gültiges Ziel. Um Ereignisse aus einem Event-Bus in einem anderen Konto zu verarbeiten, müssen die Ereignisse vom Event-Bus des Quellkontos in den Event-Bus des Zielkontos übertragen werden. Verwenden Sie den in diesem Muster beschriebenen empfohlenen Ansatz AWS-Konten, um Probleme bei der Verwaltung kritischer Ereignisse zwischen Anwendungen innerhalb verschiedener Anwendungen zu vermeiden.

Dieses Muster veranschaulicht, wie eine ereignisgesteuerte Architektur implementiert wird EventBridge , an der mehrere Personen AWS-Konten in einer AWS Organizations Organisation beteiligt sind. Das Muster verwendet AWS Cloud Development Kit (AWS CDK) Toolkit und. AWS CloudFormation

EventBridge bietet einen serverlosen Event-Bus, der Sie beim Empfangen, Filtern, Transformieren, Weiterleiten und Bereitstellen von Ereignissen unterstützt. Als wichtige Komponente ereignisgesteuerter Architekturen EventBridge unterstützt es die Trennung zwischen Nachrichtenproduzenten und Empfängern dieser Nachrichten. In einem einzigen Konto ist das ganz einfach. Bei einer Struktur mit mehreren Konten sind zusätzliche Überlegungen erforderlich, damit Ereignisse auf dem Event-Bus in einem Konto auf andere Konten innerhalb derselben Organisation übertragen werden können.

Informationen zu kontospezifischen Überlegungen für Produzenten und Verbraucher finden Sie im Abschnitt [Zusätzliche](#create-cross-account-amazon-eventbridge-connection-organization-additional) Informationen.

## Voraussetzungen und Einschränkungen
<a name="create-cross-account-amazon-eventbridge-connection-organization-prereqs"></a>

**Voraussetzungen**
+ Eine AWS Organizations Organisation, der mindestens zwei Personen angehören AWS-Konten
+ Eine AWS Identity and Access Management (IAM-) Rolle in beiden AWS-Konten , mit der Sie die Infrastruktur in beiden bereitstellen können, AWS-Konten indem Sie AWS CloudFormation
+ Git [lokal installiert](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
+ AWS Command Line Interface (AWS CLI) [lokal installiert](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+ AWS CDK [lokal installiert](https://docs.aws.amazon.com/cdk/latest/guide/cli.html) und in [beiden Bootstrapping](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html#bootstrapping-howto) AWS-Konten

**Produktversionen**

Dieses Muster wurde mit den folgenden Tools und Versionen erstellt und getestet:
+ AWS CDK Toolkit 2.126.0
+ Node.js 18.19.0
+ npm 10.2.3
+ Python 3.12

Dieses Muster sollte mit jeder Version von AWS CDK v2 oder npm funktionieren. Die Versionen 13.0.0 bis 13.6.0 von Node.js sind nicht kompatibel mit. AWS CDK

## Architektur
<a name="create-cross-account-amazon-eventbridge-connection-organization-architecture"></a>

**Zielarchitektur**

Das folgende Diagramm zeigt den Architektur-Workflow für die Übertragung eines Ereignisses von einem Konto aus und dessen Verarbeitung in einem anderen Konto.

![\[Der dreistufige Prozess zum Verbinden des Quell-Produzentenkontos und des Ziel-Verbraucherkontos.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/34a5f3ae-511d-4636-999f-c73396770117/images/ccc4878a-6281-4a77-a483-4e6f299d7807.png)


Der Workflow umfasst die folgenden Schritte:

1. Die AWS Lambda Producer-Funktion im Quellkonto platziert ein Ereignis auf dem EventBridge Event-Bus des Kontos.

1. Die kontenübergreifende EventBridge Regel leitet das Ereignis an einen EventBridge Event-Bus im Zielkonto weiter.

1. Der EventBridge Eventbus im Zielkonto hat eine Lambda-Zielregel, die die Consumer-Lambda-Funktion aufruft.

Eine bewährte Methode ist die Verwendung einer [Dead Letter Queue (DLQ)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html) für die Behandlung fehlgeschlagener Aufrufe der Consumer-Lambda-Funktion. Aus Gründen der Übersichtlichkeit wurde die DLQ in dieser Lösung jedoch weggelassen. Weitere Informationen darüber, wie Sie eine DLQ in Ihren Workflows implementieren und die Fähigkeit Ihrer Workflows zur Wiederherstellung nach Fehlern verbessern können, finden Sie im Blogbeitrag [Implementieren von AWS Lambda Fehlerbehandlungsmustern](https://aws.amazon.com/blogs/compute/implementing-aws-lambda-error-handling-patterns/).

**Automatisierung und Skalierung**

AWS CDK stellt automatisch die erforderliche Architektur bereit. EventBridge kann je nach auf Tausende von Datensätzen pro Sekunde skaliert AWS-Region werden. Weitere Informationen finden Sie in der [Dokumentation zu EventBridge Amazon-Kontingenten](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-quota.html).

## Tools
<a name="create-cross-account-amazon-eventbridge-connection-organization-tools"></a>

**AWS-Services**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)ist ein Softwareentwicklungs-Framework, das Sie bei der Definition und Bereitstellung von AWS Cloud Infrastruktur im Code unterstützt. Dieses Muster verwendet das [AWS CDK Toolkit](https://docs.aws.amazon.com/cdk/latest/guide/cli.html), ein Cloud-Entwicklungskit für die Befehlszeile, mit dem Sie mit Ihrer AWS CDK App interagieren können.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) ist ein serverloser Event-Bus-Service, mit dem Sie Ihre Anwendungen mit Echtzeitdaten aus einer Vielzahl von Quellen verbinden können. Zum Beispiel AWS Lambda Funktionen, HTTP-Aufruf-Endpunkte, die API-Ziele verwenden, oder Event-Busse in anderen. AWS-Konten
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne dass Sie Server bereitstellen oder verwalten müssen. Es führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)ist ein Kontoverwaltungsservice, mit dem Sie mehrere Konten zu einer Organisation AWS-Konten zusammenfassen können, die Sie erstellen und zentral verwalten.

**Andere Tools**
+ [Node.js](https://nodejs.org/en/docs/) ist eine ereignisgesteuerte JavaScript Laufzeitumgebung, die für die Erstellung skalierbarer Netzwerkanwendungen entwickelt wurde.
+ [npm](https://docs.npmjs.com/about-npm) ist eine Softwareregistrierung, die in einer Node.js -Umgebung ausgeführt wird und verwendet wird, um Pakete gemeinsam zu nutzen oder auszuleihen und die Bereitstellung von privaten Paketen zu verwalten.
+ [Python](https://www.python.org/) ist eine Allzweck-Computerprogrammiersprache.

**Code-Repository**

Der Code für dieses Muster ist im Repository GitHub [cross-account-eventbridge-in-organization](https://github.com/aws-samples/aws-cdk-examples/tree/main/python/cross-account-eventbridge-in-organization) verfügbar.

## Best Practices
<a name="create-cross-account-amazon-eventbridge-connection-organization-best-practices"></a>

Bewährte Methoden für die Arbeit mit EventBridge finden Sie in den folgenden Ressourcen:
+ [Bewährte Methoden für EventBridge Amazon-Event-Muster](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-patterns-best-practices.html)
+ [Bewährte Methoden bei der Definition von Regeln in Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules-best-practices.html)

## Epen
<a name="create-cross-account-amazon-eventbridge-connection-organization-epics"></a>

### Bereiten Sie Ihre lokale AWS CDK Bereitstellungsumgebung vor
<a name="prepare-your-local-cdk-deployment-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Konfigurieren Sie lokale Anmeldeinformationen für das Quellkonto und das Zielkonto. | Lesen Sie [unter Neue Konfiguration und neue Anmeldeinformationen einrichten](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-quickstart.html#getting-started-quickstart-new) und verwenden Sie die Authentifizierungs- und Anmeldemethode, die für Ihre Umgebung am sinnvollsten ist.Stellen Sie sicher, dass Sie die Authentifizierung sowohl AWS CLI für das Quellkonto als auch für das Zielkonto konfigurieren.Bei diesen Anweisungen wird davon ausgegangen, dass Sie zwei AWS-Profile lokal konfiguriert haben: `sourceAccount` und`destinationAccount`. | App-Developer | 
| Bootstrap für beide AWS-Konten. | Führen Sie die folgenden Befehle aus, um die Konten zu booten:<pre>cdk bootstrap --profile sourceAccount<br />cdk bootstrap --profile destinationAccount</pre> | App-Developer | 
| Klonen Sie den Mustercode. | Führen Sie den folgenden Befehl aus, um das Repository zu klonen:<pre>git clone git@github.com:aws-samples/aws-cdk-examples.git</pre>Ändern Sie dann das Verzeichnis in den neu geklonten Projektordner:<pre>cd aws-cdk-examples/python/cross-account-eventbridge-in-organization</pre> | App-Developer | 

### Auf ProducerStack das Quellkonto bereitstellen
<a name="deploy-producerstack-to-the-source-account"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Ändern Sie `cdk.json` mit Ihren Daten AWS Organizations und Ihren Kontodaten. | Nehmen Sie im Stammordner des Projekts die folgenden Änderungen vor`cdk.json`:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-cross-account-amazon-eventbridge-connection-organization.html) | App-Developer | 
| Stellen Sie die ProducerStack Ressourcen bereit. | Führen Sie den folgenden Befehl im Stammverzeichnis des Projekts aus:<pre>cdk deploy ProducerStack --profile sourceAccount</pre>Wenn Sie dazu aufgefordert werden, akzeptieren Sie die neuen IAM-Rollen und andere sicherheitsrelevante Berechtigungen, die durch erstellt wurden. AWS CloudFormation | App-Developer | 
| Stellen Sie sicher, dass die ProducerStack Ressourcen bereitgestellt wurden. | Gehen Sie wie folgt vor, um die Ressourcen zu überprüfen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-cross-account-amazon-eventbridge-connection-organization.html) | App-Developer | 

### Auf ConsumerStack dem Zielkonto bereitstellen
<a name="deploy-consumerstack-to-the-destination-account"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie die ConsumerStack Ressourcen bereit. | Führen Sie den folgenden Befehl im Stammverzeichnis des Projekts aus:<pre>cdk deploy ConsumerStack --profile destinationAccount</pre>Wenn Sie dazu aufgefordert werden, akzeptieren Sie die neuen IAM-Rollen und andere sicherheitsrelevante Berechtigungen, die durch erstellt wurden. CloudFormation | App-Developer | 
| Stellen Sie sicher, dass die Ressourcen bereitgestellt wurden ConsumerStack  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-cross-account-amazon-eventbridge-connection-organization.html) | App-Developer | 

### Ereignisse produzieren und nutzen
<a name="produce-and-consume-events"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Rufen Sie die Producer Lambda-Funktion auf. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-cross-account-amazon-eventbridge-connection-organization.html) | App-Developer | 
| Stellen Sie sicher, dass das Ereignis empfangen wurde. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-cross-account-amazon-eventbridge-connection-organization.html) | App-Developer | 

### Bereinigen
<a name="cleanup"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Zerstöre die ConsumerStack Ressourcen. | Wenn Sie dieses Muster als Test verwenden, bereinigen Sie die bereitgestellten Ressourcen, um zusätzliche Kosten zu vermeiden.Führen Sie den folgenden Befehl im Stammverzeichnis des Projekts aus:<pre>cdk destroy ConsumerStack --profile destinationAccount</pre>Sie werden aufgefordert, das Löschen des Stacks zu bestätigen. | App-Developer | 
| Zerstöre die ProducerStack Ressourcen. | Führen Sie den folgenden Befehl im Stammverzeichnis des Projekts aus:<pre>cdk destroy ProducerStack --profile sourceAccount</pre>Sie werden aufgefordert, das Löschen des Stacks zu bestätigen. | App-Developer | 

## Fehlerbehebung
<a name="create-cross-account-amazon-eventbridge-connection-organization-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Im Zielkonto wurde kein Ereignis empfangen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-cross-account-amazon-eventbridge-connection-organization.html) | 
| Beim Aufrufen einer Lambda-Funktion von der Konsole aus wird der folgende Fehler zurückgegeben: `User: arn:aws:iam::123456789012:user/XXXXX is not authorized to perform: lambda:Invoke` | Wenden Sie sich an Ihren AWS-Konto Administrator, um die entsprechenden `lambda:Invoke` Aktionsberechtigungen für die `ProducerStack-ProducerLambdaXXXX` Lambda-Funktion zu erhalten. | 

## Zugehörige Ressourcen
<a name="create-cross-account-amazon-eventbridge-connection-organization-resources"></a>

**Referenzen**
+ [AWS Organizations Benutzerhandbuch](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)
+ [ EventBridge Amazon-Ereignismuster](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html)
+ [Regeln bei Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules.html)

**Tutorials und Videos**
+ [Tutorial: Organisation erstellen und konfigurieren](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tutorials_basic.html)
+ [AWS re:Invent 2023 — Fortgeschrittene ereignisgesteuerte Muster mit Amazon (01-R) EventBridge COM3](https://www.youtube.com/watch?v=6X4lSPkn4ps)

## Zusätzliche Informationen
<a name="create-cross-account-amazon-eventbridge-connection-organization-additional"></a>

**Regel des Produzenten**

Im Quellkonto wird ein EventBridge Event-Bus erstellt, der Nachrichten von Produzenten akzeptiert (wie im Abschnitt *Architektur* gezeigt). Für diesen Eventbus wird eine Regel mit zugehörigen IAM-Berechtigungen erstellt. Die Regeln zielen auf den EventBridge Event-Bus im Zielkonto ab und basieren auf der folgenden `cdk.json` Struktur:

```
"rules": [
  {
    "id": "CrossAccount",
    "sources": ["Producer"],
    "detail_types": ["TestType"],
    "targets": [
      {
        "id": "ConsumerEventBus",
        "arn": "arn:aws:events:us-east-2:012345678901:event-bus/CrossAccount"
      }
    ]
  }
]
```

Für jeden konsumierenden Event-Bus müssen das Ereignismuster und der Ziel-Event-Bus angegeben werden.

*Ereignismuster*

Mit [Ereignismustern](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html) wird gefiltert, für welche Ereignisse diese Regel gilt. Für dieses Beispiel geben die Ereignisquellen und der Datensatz an, `detail_types` welche Ereignisse vom Ereignisbus des Quellkontos an den Ereignisbus des Zielkontos übertragen werden sollen.

*Ziel-Event-Bus*

Diese Regel zielt auf einen Eventbus ab, der in einem anderen Konto vorhanden ist. Der vollständige Name `arn` (Amazon-Ressourcenname) wird benötigt, um den Ziel-Event-Bus eindeutig zu identifizieren, und das `id` ist die [logische ID](https://docs.aws.amazon.com/cdk/v2/guide/identifiers.html#identifiers_logical_ids), die von verwendet wird AWS CloudFormation. Der Ziel-Event-Bus muss zum Zeitpunkt der Erstellung der Zielregel noch nicht vorhanden sein.

**Spezifische Überlegungen zum Zielkonto**

Im Zielkonto wird ein EventBridge Ereignisbus erstellt, um Nachrichten vom Ereignisbus des Quellkontos zu empfangen. Damit Ereignisse vom Quellkonto aus veröffentlicht werden können, müssen Sie eine [ressourcenbasierte](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-use-resource-based.html) Richtlinie erstellen:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [{
    "Sid": "AllowOrgToPutEvents",
    "Effect": "Allow",
    "Principal": "*",
    "Action": "events:PutEvents",
    "Resource": "arn:aws:events:us-east-2:012345678901:event-bus/CrossAccount",
    "Condition": {
      "StringEquals": {
        "aws:PrincipalOrgID": "o-XXXXXXXXX"
      }
    }
  }]
}
```

Es ist besonders wichtig, die `events:PutEvents` Erlaubnis zu erteilen, die es jedem anderen Konto in derselben Organisation ermöglicht, Ereignisse in diesem Event-Bus zu veröffentlichen. Wenn Sie `aws:PrincipalOrgId` die Organisations-ID angeben, werden die erforderlichen Berechtigungen gewährt.

**Muster des Ereignisses**

Sie können das enthaltene Ereignismuster an Ihren Anwendungsfall anpassen:

```
rule = events.Rule(
    self,
    self.id + 'Rule' + rule_definition['id'],
    event_bus=event_bus,
    event_pattern=events.EventPattern(
        source=rule_definition['sources'],
        detail_type=rule_definition['detail_types'],
    )
)
```

Um unnötige Verarbeitung zu vermeiden, sollte im Ereignismuster festgelegt werden, dass nur Ereignisse, die vom Zielkonto verarbeitet werden sollen, an den Ereignisbus des Zielkontos übertragen werden.

*Ressourcenbasierte Richtlinie*

In diesem Beispiel wird anhand der Organisations-ID gesteuert, welche Konten Ereignisse auf den Event-Bus des Zielkontos übertragen dürfen. Erwägen Sie, eine restriktivere Richtlinie zu verwenden, z. B. die Angabe des Quellkontos.

*EventBridge Kontingente*

Beachten Sie die folgenden [Kontingente](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-quota.html):
+ 300 Regeln pro Event-Bus sind das Standardkontingent. Dies kann bei Bedarf erweitert werden, sollte aber für die meisten Anwendungsfälle geeignet sein.
+ Fünf Ziele pro Regel sind das zulässige Maximum. Wir empfehlen Anwendungsarchitekten, für jedes Zielkonto eine eigene Regel zu verwenden, um eine genaue Steuerung des Ereignismusters zu ermöglichen.