Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menerapkan kode di beberapa Wilayah AWS menggunakan AWS CodePipeline, AWS CodeCommit, dan AWS CodeBuild
Anand Krishna Varanasi, Amazon Web Services
Ringkasan
Pola ini menunjukkan cara membangun infrastruktur atau arsitektur di beberapa Wilayah Amazon Web Services (AWS) dengan menggunakan AWS CloudFormation. Ini mencakup integrasi berkelanjutan (CI) /penerapan berkelanjutan (CD) di beberapa Wilayah AWS untuk penerapan yang lebih cepat. Langkah-langkah dalam pola ini telah diuji untuk pembuatan CodePipeline pekerjaan AWS untuk diterapkan ke tiga Wilayah AWS sebagai contoh. Anda dapat mengubah jumlah Wilayah berdasarkan kasus penggunaan Anda.
Prasyarat dan batasan
Prasyarat
Akun AWS yang aktif.
CodeBuild Peran dengan AmazonS3 FullAccess dan kebijakan. CloudWatchFullAccess Kebijakan ini memberikan CodeBuild akses untuk menonton peristiwa AWS CodeCommit melalui Amazon CloudWatch dan menggunakan Amazon Simple Storage Service (Amazon S3) sebagai penyimpanan artefak.
CloudFormation Peran AWS dengan kebijakan berikut, yang memberikan AWS CloudFormation, pada tahap Build akhir, kemampuan untuk membuat atau memperbarui fungsi AWS Lambda, mendorong atau menonton CloudWatch log Amazon, dan untuk membuat dan memperbarui set perubahan.
AWSLambdaFullAccess
AWSCodeDeployFullAccess
CloudWatchFullAccess
AWSCloudFormationFullAccess
AWSCodePipelineFullAccess
catatan
Dua peran AWS Identity and Access Management (IAM) untuk AWS CodeBuild dan AWS CloudFormation dengan kebijakan yang tepat CodeBuild untuk melakukan tugas CI yaitu pengujian, bundling, pengemasan artefak, dan penerapan ke beberapa Wilayah AWS secara paralel. Periksa silang kebijakan yang dibuat oleh CodePipeline untuk memverifikasi bahwa CodeBuild dan AWS CloudFormation memiliki izin yang tepat dalam fase CI dan CD.
Arsitektur

Arsitektur dan alur kerja Multiple-region pola ini terdiri dari langkah-langkah berikut.
Anda mengirim kode Anda ke CodeCommit repositori.
Setelah menerima pembaruan kode atau komit apa pun, CodeCommit memanggil CloudWatch acara, yang pada gilirannya memulai CodePipeline pekerjaan.
CodePipeline melibatkan CI yang ditangani oleh. CodeBuild Tugas-tugas berikut dilakukan.
Pengujian CloudFormation template AWS (opsional)
Pengemasan CloudFormation template AWS untuk setiap Wilayah yang disertakan dalam penerapan. Misalnya, pola ini diterapkan secara paralel ke tiga Wilayah AWS, jadi CodeBuild mengemas CloudFormation template AWS ke dalam tiga bucket S3, satu di setiap Wilayah yang ditentukan. Bucket S3 digunakan oleh CodeBuild sebagai repositori artefak saja.
CodeBuild mengemas artefak sebagai input untuk fase Deploy berikutnya, yang berjalan secara paralel di tiga Wilayah AWS. Jika Anda menentukan jumlah Wilayah yang berbeda, CodePipeline akan menyebarkan ke Wilayah tersebut.
Alat
Alat
AWS CodePipeline — CodePipeline adalah layanan pengiriman berkelanjutan yang dapat Anda gunakan untuk memodelkan, memvisualisasikan, dan mengotomatiskan langkah-langkah yang diperlukan untuk merilis perubahan perangkat lunak Anda secara terus menerus.
AWS CodeBuild — CodeBuild adalah layanan build terkelola penuh yang mengompilasi kode sumber Anda, menjalankan pengujian unit, dan menghasilkan artefak yang siap digunakan.
AWS CodeCommit — CodeCommit adalah layanan kontrol versi yang dihosting oleh Amazon Web Services yang dapat Anda gunakan untuk menyimpan dan mengelola aset secara pribadi (seperti kode sumber dan file biner) di cloud.
AWS CloudFormation — AWS CloudFormation adalah layanan yang membantu Anda memodelkan dan menyiapkan sumber daya Amazon Web Services sehingga Anda dapat menghabiskan lebih sedikit waktu untuk mengelola sumber daya tersebut dan lebih banyak waktu untuk berfokus pada aplikasi yang berjalan di AWS.
AWS Identity and Access Management — AWS Identity and Access Management (IAM) adalah layanan web yang membantu Anda mengontrol akses ke sumber daya AWS dengan aman.
Amazon S3 - Amazon Simple Storage Service (Amazon S3) Simple Storage Service adalah penyimpanan untuk internet. Ini dirancang untuk membuat komputasi skala web lebih mudah bagi pengembang.
Kode
Contoh kode berikut adalah untuk BuildSpec.yaml
file (Build phase).
--- artifacts: discard-paths: true files: - packaged-first-region.yaml - packaged-second-region.yaml - packaged-third-region.yaml phases: build: commands: - echo "********BUILD PHASE - CF PACKAGING**********" - "aws cloudformation package --template-file sam-template.yaml --s3-bucket $S3_FIRST_REGION --output-template-file packaged-first-region.yaml --region $FIRST_REGION" - "aws cloudformation package --template-file sam-template.yaml --s3-bucket $S3_SECOND_REGION --output-template-file packaged-second-region.yaml --region $SECOND_REGION" - "aws cloudformation package --template-file sam-template-anand.yaml --s3-bucket $S3_THIRD_REGION --output-template-file packaged-third-region.yaml --region $THIRD_REGION" install: commands: - echo "********BUILD PHASE - PYTHON SETUP**********" runtime-versions: python: 3.8 post_build: commands: - echo "********BUILD PHASE - PACKAGING COMPLETION**********" pre_build: commands: - echo "********BUILD PHASE - DEPENDENCY SETUP**********" - "npm install --silent --no-progress" - echo "********BUILD PHASE - DEPENDENCY SETUP DONE**********" version: 0.2
Epik
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Pilih Wilayah AWS utama untuk penerapan. | Masuk ke akun AWS Anda dan pilih Wilayah utama untuk penerapan. CodeCommit Repositori akan berada di Wilayah utama. | DevOps |
Buat CodeCommit repositori. | Buat CodeCommit repositori, dan tekan kode yang diperlukan ke dalamnya. Kode umumnya mencakup template AWS CloudFormation atau AWS SAM, kode Lambda jika ada, dan CodeBuild | DevOps |
Dorong kode ke dalam CodeCommit repositori. | Di bagian Lampiran, unduh kode untuk contoh ini, lalu dorong kode yang diperlukan ke dalamnya. Secara umum, kode dapat menyertakan templat AWS CloudFormation atau AWS SAM, kode Lambda, dan CodeBuild | DevOps |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Buat CodePipeline pekerjaan. | Di CodePipeline konsol, pilih Buat pipeline. | DevOps |
Beri nama CodePipeline pekerjaan dan pilih setelan peran layanan. | Masukkan nama untuk pekerjaan, dan pertahankan setelan peran layanan default sehingga CodePipeline menciptakan peran dengan kebijakan yang diperlukan terlampir. | DevOps |
Tentukan lokasi untuk toko artefak. | Di bawah Pengaturan lanjutan, pertahankan opsi default sehingga CodePipeline membuat bucket S3 untuk digunakan untuk penyimpanan artefak kode. Jika Anda menggunakan bucket S3 yang ada, bucket harus berada di Region utama yang Anda tentukan di epik pertama. | DevOps |
Tentukan kunci enkripsi. | Simpan opsi default, AWS Managed Key Default, atau pilih untuk menggunakan kunci terkelola pelanggan AWS Key Management Service (AWS KMS) Anda sendiri. | DevOps |
Tentukan penyedia sumber. | Di bawah penyedia Sumber, pilih AWS CodeCommit. | DevOps |
Tentukan repositori. | Pilih CodeCommit repositori yang Anda buat di epik pertama. Jika Anda menempatkan kode di cabang, pilih cabang. | DevOps |
Tentukan bagaimana perubahan kode terdeteksi. | Pertahankan default, Amazon CloudWatch Events, sebagai pemicu perubahan CodeCommit untuk memulai CodePipeline pekerjaan. | DevOps |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Tentukan penyedia build. | Untuk penyedia build, pilih AWS CodeBuild. | DevOps |
Tentukan Wilayah AWS. | Pilih Wilayah utama, yang Anda tentukan dalam epik pertama. | DevOps |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Buat proyek | Pilih Buat proyek, dan masukkan nama untuk proyek tersebut. | DevOps |
Tentukan gambar lingkungan. | Untuk demonstrasi pola ini, gunakan gambar CodeBuild terkelola default. Anda juga memiliki opsi untuk menggunakan gambar Docker khusus jika Anda memilikinya. | DevOps |
Tentukan sistem operasi. | Pilih Amazon Linux 2 atau Ubuntu. catatanAmazon Linux 2 mendekati akhir dukungan. Untuk informasi selengkapnya, lihat Amazon Linux 2 FAQs | DevOps |
Tentukan peran layanan. | Pilih peran yang Anda buat CodeBuild sebelum Anda mulai membuat CodePipeline pekerjaan. (Lihat bagian Prasyarat.) | DevOps |
Tetapkan opsi tambahan. | Untuk Timeout dan Timeout Antrian, pertahankan nilai default. Untuk sertifikat, pertahankan pengaturan default kecuali Anda memiliki sertifikat khusus yang ingin Anda gunakan. | DevOps |
Buat variabel lingkungan. | Untuk setiap Wilayah AWS yang ingin Anda terapkan, buat variabel lingkungan dengan memberikan nama bucket S3 dan nama Region (misalnya, us-east-1). | DevOps |
Berikan nama file buildspec, jika bukan buildspec.yml. | Biarkan bidang ini kosong jika nama file adalah default, | DevOps |
Tentukan logging. | Untuk melihat log untuk CloudWatch Acara Amazon, pertahankan pengaturan default. Atau Anda dapat menentukan nama grup atau logger tertentu. | DevOps |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Lewati fase penyebaran dan selesaikan pembuatan pipa. | Ketika Anda mengatur pipeline, CodePipeline memungkinkan Anda untuk membuat hanya satu tahap dalam fase Deploy. Untuk menerapkan ke beberapa Wilayah AWS, lewati fase ini. Setelah pipeline dibuat, Anda dapat menambahkan beberapa tahap fase Deploy. | DevOps |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Tambahkan tahapan ke fase Deploy. | Edit pipeline dan pilih Add stage di fase Deploy. Tahap pertama ini adalah untuk Wilayah primer. | DevOps |
Berikan nama tindakan untuk panggung. | Masukkan nama unik yang mencerminkan tahap pertama (primer) dan Wilayah. <region>Misalnya, masukkan primery_ _deploy. | DevOps |
Tentukan penyedia tindakan. | Untuk penyedia Action, pilih AWS CloudFormation. | DevOps |
Konfigurasikan Wilayah untuk tahap pertama. | Pilih Wilayah (primer) pertama, Wilayah yang sama di mana CodePipeline dan CodeBuild diatur. Ini adalah Wilayah utama tempat Anda ingin menyebarkan tumpukan. | DevOps |
Tentukan artefak input. | Pilih BuildArtifact. Ini adalah output dari fase build. | DevOps |
Tentukan tindakan yang akan diambil. | Untuk mode Tindakan, pilih Buat atau perbarui tumpukan. | DevOps |
Masukkan nama untuk CloudFormation tumpukan. | DevOps | |
Tentukan template untuk Wilayah pertama. | Pilih nama paket khusus Wilayah yang dikemas oleh CodeBuild dan dibuang ke bucket S3 untuk Region (primer) pertama. | DevOps |
Tentukan kemampuannya. | Kemampuan diperlukan jika template tumpukan menyertakan sumber daya IAM atau jika Anda membuat tumpukan langsung dari template yang berisi makro. Untuk pola ini, gunakan CAPABILITY_IAM, CAPABILITY_NAMED_IAM, CAPABILITY_AUTO_EXPAND. | DevOps |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Tambahkan tahap kedua ke fase Deploy. | Untuk menambahkan tahap untuk Wilayah kedua, edit pipeline dan pilih Tambah tahap di fase Deploy. Penting: Proses pembuatan Wilayah kedua sama dengan Wilayah pertama, kecuali untuk nilai-nilai berikut. | DevOps |
Berikan nama tindakan untuk tahap kedua. | Masukkan nama unik yang mencerminkan tahap kedua dan Wilayah kedua. | DevOps |
Konfigurasikan Wilayah untuk tahap kedua. | Pilih Wilayah kedua tempat Anda ingin menyebarkan tumpukan. | DevOps |
Tentukan template untuk Wilayah kedua. | Pilih nama paket khusus Wilayah yang dikemas oleh CodeBuild dan dibuang ke bucket S3 untuk Wilayah kedua. | DevOps |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Tambahkan tahap ketiga ke fase Deploy. | Untuk menambahkan tahap untuk Wilayah ketiga, edit pipeline dan pilih Tambah tahap di fase Deploy. Penting: Proses pembuatan Wilayah kedua sama dengan dua Wilayah sebelumnya, kecuali untuk nilai-nilai berikut. | DevOps |
Berikan nama tindakan untuk tahap ketiga. | Masukkan nama unik yang mencerminkan tahap ketiga dan Wilayah ketiga. | DevOps |
Konfigurasikan Wilayah untuk tahap ketiga. | Pilih Wilayah ketiga tempat Anda ingin menyebarkan tumpukan. | DevOps |
Tentukan template untuk Wilayah ketiga. | Pilih nama paket khusus Wilayah yang dikemas oleh CodeBuild dan dibuang ke bucket S3 untuk Wilayah ketiga. | DevOps |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Hapus sumber daya AWS. | Untuk membersihkan penyebaran, hapus CloudFormation tumpukan di setiap Wilayah. Kemudian hapus CodeCommit, CodeBuild, dan CodePipeline sumber daya dari Wilayah utama. | DevOps |
Sumber daya terkait
Lampiran
Untuk mengakses konten tambahan yang terkait dengan dokumen ini, unzip file berikut: attachment.zip