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
Sam Wilson dan Robert Stone, Amazon Web Services
Ringkasan
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.
Prasyarat dan batasan
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
AWS Command Line Interface (AWS CLI) dipasang secara lokal
AWS CDK diinstal secara lokal dan bootstrap 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
Arsitektur target
Diagram berikut menunjukkan alur kerja arsitektur untuk mendorong peristiwa dari satu akun dan menggunakannya di akun lain.

Alur kerja berisi langkah-langkah berikut:
AWS Lambda Fungsi Produser di akun Sumber menempatkan acara di bus EventBridge acara akun.
EventBridge Aturan lintas akun merutekan acara ke bus EventBridge acara di akun Tujuan.
Bus EventBridge acara di akun Tujuan memiliki aturan Lambda target yang memanggil fungsi Lambda Konsumen.
Praktik terbaik adalah menggunakan Dead Letter Queue (DLQ) 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
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.
Alat
Layanan AWS
AWS Cloud Development Kit (AWS CDK)adalah kerangka pengembangan perangkat lunak yang membantu Anda menentukan dan menyediakan AWS Cloud infrastruktur dalam kode. Pola ini menggunakan AWS CDK Toolkit, kit pengembangan cloud baris perintah yang membantu Anda berinteraksi dengan AWS CDK aplikasi.
Amazon EventBridge 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 Lambdaadalah 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 Organizationsadalah layanan manajemen akun yang membantu Anda mengkonsolidasikan beberapa Akun AWS ke dalam organisasi yang Anda buat dan kelola secara terpusat.
Alat lainnya
Node.js
adalah lingkungan JavaScript runtime berbasis peristiwa yang dirancang untuk membangun aplikasi jaringan yang dapat diskalakan. 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
pemrograman komputer tujuan umum.
Repositori kode
Kode untuk pola ini tersedia di repositori GitHub cross-account-eventbridge-in-organization
Praktik terbaik
Untuk praktik terbaik saat bekerja sama EventBridge, lihat sumber daya berikut:
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Konfigurasikan kredenal lokal untuk akun Sumber dan akun Tujuan. | Tinjau Menyiapkan konfigurasi dan kredensil baru, dan gunakan metode otentikasi dan kredensi yang paling masuk akal bagi lingkungan Anda. pentingPastikan untuk mengonfigurasi AWS CLI untuk kedua akun Sumber dan otentikasi akun Tujuan. Petunjuk ini mengasumsikan bahwa Anda telah mengonfigurasi dua profil AWS secara lokal: | Pengembang aplikasi |
Bootstrap keduanya Akun AWS. | Untuk mem-bootstrap akun, jalankan perintah berikut:
| Pengembang aplikasi |
Kloning kode pola. | Untuk mengkloning repositori, jalankan perintah berikut:
Kemudian, ubah direktori ke folder proyek yang baru dikloning:
| Pengembang aplikasi |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Ubah | Di folder root proyek, buat perubahan berikut ke
| Pengembang aplikasi |
Menyebarkan ProducerStack sumber daya. | Jalankan perintah berikut dari direktori root proyek:
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:
| Pengembang aplikasi |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Menyebarkan ConsumerStack sumber daya. | Jalankan perintah berikut dari direktori root proyek:
Saat diminta, terima peran IAM baru dan izin terkait keamanan lainnya yang dibuat melalui. AWS CloudFormation | Pengembang aplikasi |
Verifikasi bahwa ConsumerStack sumber daya digunakan |
| Pengembang aplikasi |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Memanggil fungsi Lambda Produser. |
| Pengembang aplikasi |
Verifikasi bahwa acara telah diterima. |
| Pengembang aplikasi |
| 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:
Anda akan diminta untuk mengonfirmasi penghapusan tumpukan. | Pengembang aplikasi |
Hancurkan ProducerStack sumber daya. | Jalankan perintah berikut dari direktori root proyek:
Anda akan diminta untuk mengonfirmasi penghapusan tumpukan. | Pengembang aplikasi |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
Tidak ada acara yang diterima di akun Tujuan. |
|
Memanggil fungsi Lambda dari konsol mengembalikan kesalahan berikut:
| Hubungi Akun AWS administrator Anda untuk menerima izin |
Sumber daya terkait
Referensi
Tutorial dan video
Informasi tambahan
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 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 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:
{ "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
Perlu diingat kuota 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.