

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
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function"></a>

*Richard Milner-Watts dan Amit Anjarlekar, Amazon Web Services*

## Ringkasan
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-summary"></a>

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](https://service-catalog-tools-workshop.com/tools.html) di situs web AWS Workshop dan [Menjadwalkan pekerjaan di Amazon RDS for PostgreSQL CodeBuild menggunakan AWS EventBridge dan Amazon di Blog AWS Database](https://aws.amazon.com/blogs/database/schedule-jobs-in-amazon-rds-for-postgresql-using-aws-codebuild-and-amazon-eventbridge/).

## Prasyarat dan batasan
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-prereqs"></a>

**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](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html) antar akun.

## Arsitektur
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-architecture"></a>

Diagram berikut menunjukkan arsitektur yang dibangun pola ini.

![\[Diagram arsitektur peluncuran CodeBuild proyek di beberapa akun AWS\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/809a5716-56e5-477c-aac6-02243675a2f2/images/857ba3ae-eb9a-4d6b-b73e-e596f41c8cb8.png)


Diagram menunjukkan alur kerja berikut:

1. 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.

1. 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.

1. Menggunakan peran yang diasumsikan, fungsi Lambda meluncurkan CodeBuild proyek dan mengembalikan ID pekerjaan. CodeBuild Step Functions menyatakan mesin melakukan loop dan melakukan polling CodeBuild pekerjaan hingga menerima status sukses atau gagal.

Logika mesin negara ditunjukkan pada gambar berikut.

![\[Alur kerja mesin status Step Functions\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/809a5716-56e5-477c-aac6-02243675a2f2/images/4729bbfc-79ad-455d-a85a-b96cce00f432.png)


**Tumpukan teknologi**
+ AWS CloudFormation
+ CodeBuild
+ IAM
+ Lambda
+ Step Functions
+ X-Ray

## Alat
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-tools"></a>
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 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](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/working-with-templates-cfn-designer-json-editor.html) menyediakan editor JSON dan YAMAL terintegrasi yang membantu Anda melihat dan mengedit CloudFormation templat.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 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)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) membantu Anda mengelola akses ke sumber daya AWS dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
+ [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 Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) 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](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 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](https://github.com/aws-samples/cross-account-codebuild-proxy). Pola ini menggunakan AWS Lambda Powertools for Python library untuk menyediakan fungsionalitas logging dan tracing. Untuk informasi selengkapnya tentang pustaka ini dan utilitasnya, lihat [Powertools for AWS Lambda (Python)](https://docs.powertools.aws.dev/lambda/python/latest/).

## Praktik terbaik
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-best-practices"></a>

1. Sesuaikan nilai waktu tunggu di mesin status Fungsi Langkah untuk meminimalkan permintaan polling untuk status pekerjaan. Gunakan waktu eksekusi yang diharapkan untuk CodeBuild proyek.

1. Sesuaikan `MaxConcurrency` properti peta di Step Functions untuk mengontrol berapa banyak CodeBuild proyek yang dapat dijalankan secara paralel.

1. 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
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-epics"></a>

### Buat fungsi proxy Lambda dan peran IAM terkait di akun sumber
<a name="create-the-lambda-proxy-function-and-associated-iam-role-in-the-source-account"></a>


| 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/console_account-alias.html#FindingYourAWSId) di dokumentasi IAM. | AWS DevOps | 
| Unduh CloudFormation templat AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html)Dalam CloudFormation templat AWS, `<SourceAccountId>` adalah ID akun AWS untuk akun sumber, dan `<TargetAccountId>` merupakan ID akun AWS untuk akun target. | AWS DevOps | 
| Buat dan terapkan CloudFormation tumpukan AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html)Anda 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. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 

### Buat peran IAM di akun target dan luncurkan proyek sampel CodeBuild
<a name="create-an-iam-role-in-the-target-account-and-launch-a-sample-codebuild-project"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat dan terapkan CloudFormation tumpukan AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 
| Verifikasi pembuatan CodeBuild proyek sampel.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 

### Uji fungsi proxy Lambda lintas akun
<a name="test-the-cross-account-lambda-proxy-function"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Luncurkan mesin negara. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 
| Validasi variabel lingkungan. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 

## Pemecahan masalah
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-troubleshooting"></a>


| Isu | Solusi | 
| --- | --- | 
| Eksekusi Step Functions memakan waktu lebih lama dari yang diharapkan. | Sesuaikan `MaxConcurrency` properti peta di mesin status Step Function untuk mengontrol berapa banyak CodeBuild proyek yang dapat berjalan secara paralel. | 
| Pelaksanaan CodeBuild pekerjaan memakan waktu lebih lama dari yang diharapkan. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | 