Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Luncurkan CodeBuild proyek di seluruh akun AWS menggunakan Step Functions dan fungsi proxy Lambda
Richard Milner-Watts dan Amit Anjarlekar, Amazon Web Services
Ringkasan
Pola ini menunjukkan cara meluncurkan proyek AWS secara asinkron CodeBuild di beberapa akun AWS dengan menggunakan AWS Step Functions dan fungsi proxy AWS Lambda. Anda dapat menggunakan contoh mesin status Step Functions pola untuk menguji keberhasilan CodeBuild proyek Anda.
CodeBuild membantu Anda menjalankan tugas operasional menggunakan AWS Command Line Interface (AWS CLI) dari lingkungan runtime yang dikelola sepenuhnya. Anda dapat mengubah perilaku CodeBuild proyek Anda saat runtime dengan mengganti variabel lingkungan. Selain itu, Anda dapat menggunakan CodeBuild untuk mengelola alur kerja. Untuk informasi selengkapnya, lihat Alat Service Catalog
Prasyarat dan batasan
Prasyarat
Dua akun AWS aktif: akun sumber untuk menjalankan fungsi proxy Lambda dengan Step Functions dan akun target untuk membangun proyek sampel jarak jauh CodeBuild
Batasan
Pola ini tidak dapat digunakan untuk menyalin artefak antar akun.
Arsitektur
Diagram berikut menunjukkan arsitektur yang dibangun pola ini.

Diagram menunjukkan alur kerja berikut:
Mesin status Step Functions mem-parsing peta input yang disediakan dan memanggil fungsi proxy Lambda (
codebuild-proxy-lambda) untuk setiap akun, Wilayah, dan proyek yang Anda tentukan.Fungsi proxy Lambda menggunakan AWS Security Token Service (AWS STS) untuk mengambil peran proxy IAM (
codebuild-proxy-role), yang dikaitkan dengan kebijakan IAM (codebuild-proxy-policy) di akun target.Menggunakan peran yang diasumsikan, fungsi Lambda meluncurkan CodeBuild proyek dan mengembalikan ID pekerjaan. CodeBuild Step Functions menyatakan mesin melakukan loop dan polling CodeBuild pekerjaan hingga menerima status sukses atau gagal.
Logika mesin negara ditunjukkan pada gambar berikut.

Tumpukan teknologi
AWS CloudFormation
CodeBuild
IAM
Lambda
Step Functions
X-Ray
Alat
AWS CloudFormation membantu Anda menyiapkan sumber daya AWS, menyediakannya dengan cepat dan konsisten, serta mengelolanya sepanjang siklus hidupnya di seluruh akun dan Wilayah AWS.
AWS CloudFormation Designer menyediakan editor JSON dan YAMAL terintegrasi yang membantu Anda melihat dan mengedit CloudFormation templat.
AWS CodeBuild adalah layanan build terkelola penuh yang membantu Anda mengkompilasi kode sumber, menjalankan pengujian unit, dan menghasilkan artefak yang siap digunakan.
AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke sumber daya AWS dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
AWS Lambda 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 Step Functions adalah layanan orkestrasi tanpa server yang membantu Anda menggabungkan fungsi AWS Lambda dan layanan AWS lainnya untuk membangun aplikasi yang penting bagi bisnis.
AWS X-Ray membantu Anda mengumpulkan data tentang permintaan yang disajikan aplikasi Anda, dan menyediakan alat yang dapat Anda gunakan untuk melihat, memfilter, dan mendapatkan wawasan tentang data tersebut guna mengidentifikasi masalah dan peluang pengoptimalan.
Kode
Kode sampel untuk pola ini tersedia di repositori GitHub Cross Account CodeBuild Proxy
Praktik terbaik
Sesuaikan nilai waktu tunggu di mesin status Fungsi Langkah untuk meminimalkan permintaan polling untuk status pekerjaan. Gunakan waktu eksekusi yang diharapkan untuk CodeBuild proyek.
Sesuaikan
MaxConcurrencyproperti peta di Step Functions untuk mengontrol berapa banyak CodeBuild proyek yang dapat dijalankan secara paralel.Jika diperlukan, tinjau kode sampel untuk kesiapan produksi. Pertimbangkan data apa yang mungkin dicatat oleh solusi dan apakah CloudWatch enkripsi Amazon default sudah cukup.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Rekam akun AWS IDs. | Akun AWS IDs diperlukan untuk mengatur akses di seluruh akun. Catat ID akun AWS untuk akun sumber dan target Anda. Untuk informasi selengkapnya, lihat Menemukan ID akun AWS Anda di dokumentasi IAM. | AWS DevOps |
Unduh CloudFormation templat AWS. |
catatanDalam CloudFormation templat AWS, | AWS DevOps |
Buat dan terapkan CloudFormation tumpukan AWS. |
catatanAnda harus membuat CloudFormation tumpukan AWS untuk fungsi Lambda proxy sebelum membuat sumber daya apa pun di akun target. Saat Anda membuat kebijakan kepercayaan di akun target, peran IAM diterjemahkan dari nama peran ke pengenal internal. Inilah sebabnya mengapa peran IAM harus sudah ada. | AWS DevOps |
Konfirmasikan pembuatan fungsi proxy dan mesin status. |
| AWS DevOps |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat dan terapkan CloudFormation tumpukan AWS. |
| AWS DevOps |
Verifikasi pembuatan CodeBuild proyek sampel. |
| AWS DevOps |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Luncurkan mesin negara. |
| AWS DevOps |
Validasi variabel lingkungan. |
| AWS DevOps |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
Eksekusi Step Functions memakan waktu lebih lama dari yang diharapkan. | Sesuaikan |
Pelaksanaan CodeBuild pekerjaan memakan waktu lebih lama dari yang diharapkan. |
|