

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Membuat EventBridge koneksi Amazon lintas akun di suatu organisasi
<a name="create-cross-account-amazon-eventbridge-connection-organization"></a>

*Sam Wilson dan Robert Stone, Amazon Web Services*

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

Sistem terdistribusi besar menggunakan Amazon EventBridge untuk mengkomunikasikan perubahan status antara berbagai akun Amazon Web Services (AWS) dalam suatu AWS Organizations organisasi. Namun, EventBridge umumnya hanya dapat menargetkan endpoint atau konsumen dalam hal yang sama Akun AWS. Pengecualian adalah bus acara di akun yang berbeda. Bus acara itu adalah target yang valid. Untuk mengkonsumsi acara dari bus acara di akun lain, acara harus didorong dari bus acara akun sumber ke bus acara akun tujuan. Untuk menghindari tantangan saat mengelola peristiwa kritis di seluruh aplikasi yang berbeda Akun AWS, gunakan pendekatan yang direkomendasikan yang disajikan dalam pola ini.

Pola ini menggambarkan bagaimana menerapkan arsitektur berbasis peristiwa dengan EventBridge yang melibatkan banyak Akun AWS dalam suatu organisasi. AWS Organizations Pola menggunakan AWS Cloud Development Kit (AWS CDK) Toolkit dan AWS CloudFormation.

EventBridge menawarkan bus acara tanpa server yang membantu Anda menerima, memfilter, mengubah, merutekan, dan mengirimkan acara. Komponen penting dari arsitektur berbasis peristiwa, EventBridge mendukung pemisahan antara produsen pesan dan konsumen pesan tersebut. Dalam satu akun, ini lurus ke depan. Struktur multi-akun memerlukan pertimbangan tambahan untuk acara di bus acara dalam satu akun untuk dikonsumsi di akun lain dalam organisasi yang sama.

Untuk informasi tentang pertimbangan khusus akun bagi produsen dan konsumen, lihat bagian Informasi [tambahan](#create-cross-account-amazon-eventbridge-connection-organization-additional).

## Prasyarat dan batasan
<a name="create-cross-account-amazon-eventbridge-connection-organization-prereqs"></a>

**Prasyarat**
+ Sebuah AWS Organizations organisasi dengan setidaknya dua yang terkait Akun AWS
+ Peran AWS Identity and Access Management (IAM) di keduanya Akun AWS yang memungkinkan Anda menyediakan infrastruktur di keduanya Akun AWS dengan menggunakan AWS CloudFormation
+ Git [diinstal secara lokal](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
+ AWS Command Line Interface (AWS CLI) [dipasang secara lokal](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+ AWS CDK [diinstal secara lokal](https://docs.aws.amazon.com/cdk/latest/guide/cli.html) dan [bootstrap](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html#bootstrapping-howto) di keduanya Akun AWS

**Versi produk**

Pola ini telah dibangun dan diuji dengan menggunakan alat dan versi berikut:
+ AWS CDK Toolkit 2.126.0
+ Node.js 18.19.0
+ npm 10.2.3
+ Python 3.12

Pola ini harus bekerja dengan versi AWS CDK v2 atau npm apa pun. Node.js versi 13.0.0 hingga 13.6.0 tidak kompatibel dengan. AWS CDK

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

**Arsitektur target**

Diagram berikut menunjukkan alur kerja arsitektur untuk mendorong peristiwa dari satu akun dan menggunakannya di akun lain.

![\[Proses tiga langkah untuk menghubungkan akun produsen Sumber dan akun konsumen Tujuan.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/34a5f3ae-511d-4636-999f-c73396770117/images/ccc4878a-6281-4a77-a483-4e6f299d7807.png)


Alur kerja berisi langkah-langkah berikut:

1.  AWS Lambda Fungsi Produser di akun Sumber menempatkan acara di bus EventBridge acara akun.

1.  EventBridge Aturan lintas akun merutekan acara ke bus EventBridge acara di akun Tujuan.

1. Bus EventBridge acara di akun Tujuan memiliki aturan Lambda target yang memanggil fungsi Lambda Konsumen.

Praktik terbaik adalah menggunakan [Dead Letter Queue (DLQ)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html) untuk menangani pemanggilan fungsi Lambda Konsumen yang gagal. Namun, DLQ dihilangkan dari solusi ini untuk kejelasan. Untuk mempelajari lebih lanjut tentang cara menerapkan DLQ dalam alur kerja Anda dan meningkatkan kemampuan alur kerja Anda untuk pulih dari kegagalan, lihat posting blog [Menerapkan pola penanganan AWS Lambda kesalahan](https://aws.amazon.com/blogs/compute/implementing-aws-lambda-error-handling-patterns/).

**Otomatisasi dan skala**

AWS CDK secara otomatis menyediakan arsitektur yang diperlukan. EventBridge dapat menskalakan hingga ribuan catatan per detik tergantung pada Wilayah AWS. Untuk informasi selengkapnya, lihat [dokumentasi EventBridge kuota Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-quota.html).

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

**Layanan AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)adalah kerangka pengembangan perangkat lunak yang membantu Anda menentukan dan menyediakan AWS Cloud infrastruktur dalam kode. Pola ini menggunakan [AWS CDK Toolkit, kit](https://docs.aws.amazon.com/cdk/latest/guide/cli.html) pengembangan cloud baris perintah yang membantu Anda berinteraksi dengan AWS CDK aplikasi.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) adalah layanan bus acara tanpa server yang membantu Anda menghubungkan aplikasi Anda dengan data waktu nyata dari berbagai sumber. Misalnya, AWS Lambda fungsi, titik akhir pemanggilan HTTP menggunakan tujuan API, atau bus acara di tempat lain. Akun AWS
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)adalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)adalah layanan manajemen akun yang membantu Anda mengkonsolidasikan beberapa Akun AWS ke dalam organisasi yang Anda buat dan kelola secara terpusat.

**Alat lainnya**
+ [Node.js](https://nodejs.org/en/docs/) adalah lingkungan JavaScript runtime berbasis peristiwa yang dirancang untuk membangun aplikasi jaringan yang dapat diskalakan.
+ [npm](https://docs.npmjs.com/about-npm) adalah registri perangkat lunak yang berjalan di lingkungan Node.js dan digunakan untuk berbagi atau meminjam paket dan mengelola penyebaran paket pribadi.
+ [Python adalah bahasa](https://www.python.org/) pemrograman komputer tujuan umum.

**Repositori kode**

Kode untuk pola ini tersedia di repositori GitHub [cross-account-eventbridge-in-organization](https://github.com/aws-samples/aws-cdk-examples/tree/main/python/cross-account-eventbridge-in-organization).

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

Untuk praktik terbaik saat bekerja sama EventBridge, lihat sumber daya berikut:
+ [Praktik terbaik untuk pola EventBridge acara Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-patterns-best-practices.html)
+ [Praktik terbaik saat mendefinisikan aturan di Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules-best-practices.html)

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

### Siapkan lingkungan AWS CDK penyebaran lokal Anda
<a name="prepare-your-local-cdk-deployment-environment"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Konfigurasikan kredenal lokal untuk akun Sumber dan akun Tujuan. | Tinjau [Menyiapkan konfigurasi dan kredensil baru](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-quickstart.html#getting-started-quickstart-new), dan gunakan metode otentikasi dan kredensi yang paling masuk akal bagi lingkungan Anda.Pastikan untuk mengonfigurasi AWS CLI untuk kedua akun Sumber dan otentikasi akun Tujuan.Petunjuk ini mengasumsikan bahwa Anda telah mengonfigurasi dua profil AWS secara lokal: `sourceAccount` dan`destinationAccount`. | Pengembang aplikasi | 
| Bootstrap keduanya Akun AWS. | Untuk mem-bootstrap akun, jalankan perintah berikut:<pre>cdk bootstrap --profile sourceAccount<br />cdk bootstrap --profile destinationAccount</pre> | Pengembang aplikasi | 
| Kloning kode pola. | Untuk mengkloning repositori, jalankan perintah berikut:<pre>git clone git@github.com:aws-samples/aws-cdk-examples.git</pre>Kemudian, ubah direktori ke folder proyek yang baru dikloning:<pre>cd aws-cdk-examples/python/cross-account-eventbridge-in-organization</pre> | Pengembang aplikasi | 

### Terapkan ProducerStack ke akun Sumber
<a name="deploy-producerstack-to-the-source-account"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Ubah `cdk.json` dengan detail akun AWS Organizations dan akun Anda. | Di folder root proyek, buat perubahan berikut ke`cdk.json`:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/create-cross-account-amazon-eventbridge-connection-organization.html) | Pengembang aplikasi | 
| Menyebarkan ProducerStack sumber daya. | Jalankan perintah berikut dari direktori root proyek:<pre>cdk deploy ProducerStack --profile sourceAccount</pre>Saat diminta, terima peran IAM baru dan izin terkait keamanan lainnya yang dibuat melalui. AWS CloudFormation | Pengembang aplikasi | 
| Verifikasi bahwa ProducerStack sumber daya digunakan. | Untuk memverifikasi sumber daya, lakukan hal berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/create-cross-account-amazon-eventbridge-connection-organization.html) | Pengembang aplikasi | 

### Menyebarkan ConsumerStack ke akun Tujuan
<a name="deploy-consumerstack-to-the-destination-account"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Menyebarkan ConsumerStack sumber daya. | Jalankan perintah berikut dari direktori root proyek:<pre>cdk deploy ConsumerStack --profile destinationAccount</pre>Saat diminta, terima peran IAM baru dan izin terkait keamanan lainnya yang dibuat melalui. CloudFormation | Pengembang aplikasi | 
| Verifikasi bahwa ConsumerStack sumber daya digunakan | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/create-cross-account-amazon-eventbridge-connection-organization.html) | Pengembang aplikasi | 

### Menghasilkan dan mengkonsumsi acara
<a name="produce-and-consume-events"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Memanggil fungsi Lambda Produser. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/create-cross-account-amazon-eventbridge-connection-organization.html) | Pengembang aplikasi | 
| Verifikasi bahwa acara telah diterima. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/create-cross-account-amazon-eventbridge-connection-organization.html) | Pengembang aplikasi | 

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


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Hancurkan ConsumerStack sumber daya. | Jika Anda menggunakan pola ini sebagai pengujian, bersihkan sumber daya yang digunakan untuk menghindari biaya tambahan.Jalankan perintah berikut dari direktori root proyek:<pre>cdk destroy ConsumerStack --profile destinationAccount</pre>Anda akan diminta untuk mengonfirmasi penghapusan tumpukan. | Pengembang aplikasi | 
| Hancurkan ProducerStack sumber daya. | Jalankan perintah berikut dari direktori root proyek:<pre>cdk destroy ProducerStack --profile sourceAccount</pre>Anda akan diminta untuk mengonfirmasi penghapusan tumpukan. | Pengembang aplikasi | 

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


| Isu | Solusi | 
| --- | --- | 
| Tidak ada acara yang diterima di akun Tujuan. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/create-cross-account-amazon-eventbridge-connection-organization.html) | 
| Memanggil fungsi Lambda dari konsol mengembalikan kesalahan berikut: `User: arn:aws:iam::123456789012:user/XXXXX is not authorized to perform: lambda:Invoke` | Hubungi Akun AWS administrator Anda untuk menerima izin `lambda:Invoke` tindakan yang sesuai pada fungsi `ProducerStack-ProducerLambdaXXXX` Lambda. | 

## Sumber daya terkait
<a name="create-cross-account-amazon-eventbridge-connection-organization-resources"></a>

**Referensi**
+ [AWS Organizations Panduan Pengguna](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)
+ [Pola EventBridge acara Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html)
+ [Aturan di Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules.html)

**Tutorial dan video**
+ [Tutorial: Membuat dan mengkonfigurasi organisasi](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tutorials_basic.html)
+ [AWS re: invent 2023 - Pola berbasis peristiwa tingkat lanjut dengan Amazon (01-R) EventBridge COM3](https://www.youtube.com/watch?v=6X4lSPkn4ps)

## Informasi tambahan
<a name="create-cross-account-amazon-eventbridge-connection-organization-additional"></a>

**Aturan produsen**

Di akun Sumber, bus EventBridge acara dibuat untuk menerima pesan dari produsen (seperti yang ditunjukkan di bagian *Arsitektur*). Aturan dengan izin IAM yang menyertainya dibuat di bus acara ini. Aturan menargetkan bus EventBridge acara di akun Tujuan berdasarkan `cdk.json` struktur berikut:

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

Untuk setiap bus acara konsumsi, pola acara dan bus acara target harus disertakan.

*Pola Acara*

[Pola acara](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html) memfilter peristiwa mana yang akan diterapkan aturan ini. Untuk tujuan contoh ini, sumber acara dan catatan `detail_types` mengidentifikasi peristiwa mana yang akan dikirimkan dari bus acara akun Sumber ke bus acara akun Tujuan.

*Target bus acara*

Aturan ini menargetkan bus acara yang ada di akun lain. Lengkap `arn` (Nama Sumber Daya Amazon) diperlukan untuk mengidentifikasi bus peristiwa target secara unik, dan itu `id` adalah [ID logis](https://docs.aws.amazon.com/cdk/v2/guide/identifiers.html#identifiers_logical_ids) yang digunakan oleh. AWS CloudFormation Bus acara target tidak perlu benar-benar ada pada saat pembuatan aturan target.

**Pertimbangan khusus akun tujuan**

Di akun Tujuan, bus EventBridge acara dibuat untuk menerima pesan dari bus acara akun Sumber. Untuk mengizinkan acara dipublikasikan dari akun Sumber, Anda harus membuat kebijakan berbasis [sumber daya](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-use-resource-based.html):

```
{
  "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"
      }
    }
  }]
}
```

Sangat penting untuk memberikan `events:PutEvents` izin, yang memungkinkan akun lain di organisasi yang sama untuk mempublikasikan acara ke bus acara ini. Menyetel `aws:PrincipalOrgId` sebagai ID organisasi memberikan izin yang diperlukan.

**Pola acara**

Anda dapat memodifikasi pola acara yang disertakan untuk memenuhi kasus penggunaan Anda:

```
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'],
    )
)
```

Untuk mengurangi pemrosesan yang tidak perlu, pola acara harus menentukan bahwa hanya peristiwa yang akan diproses oleh akun Tujuan yang ditransmisikan ke bus acara akun Tujuan.

*Kebijakan berbasis sumber daya*

Contoh ini menggunakan ID organisasi untuk mengontrol akun mana yang diizinkan untuk menempatkan peristiwa di bus acara akun Tujuan. Pertimbangkan untuk menggunakan kebijakan yang lebih ketat, seperti menentukan akun Sumber.

*EventBridge kuota*

Ingatlah [kuota](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-quota.html) berikut:
+ 300 aturan per bus acara adalah kuota default. Ini dapat diperluas jika perlu, tetapi harus sesuai dengan sebagian besar kasus penggunaan.
+ Lima target per aturan adalah maksimum yang diizinkan. Kami merekomendasikan bahwa arsitek aplikasi harus menggunakan aturan yang berbeda untuk setiap akun Destination untuk mendukung kontrol halus atas pola acara.