Menerapkan kode di beberapa Wilayah AWS menggunakan AWS CodePipeline, AWS CodeCommit, dan AWS CodeBuild - AWS Prescriptive Guidance

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

CodePipeline Pekerjaan AWS yang diterapkan ke tiga Wilayah AWS.

Arsitektur dan alur kerja Multiple-region pola ini terdiri dari langkah-langkah berikut.

  1. Anda mengirim kode Anda ke CodeCommit repositori.

  2. Setelah menerima pembaruan kode atau komit apa pun, CodeCommit memanggil CloudWatch acara, yang pada gilirannya memulai CodePipeline pekerjaan.

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

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

TugasDeskripsiKeterampilan 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 buildspec.yaml file sebagai input ke AWS. CodePipeline

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 buildspec.yaml file sebagai input ke pipeline.

DevOps
TugasDeskripsiKeterampilan 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
TugasDeskripsiKeterampilan 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
TugasDeskripsiKeterampilan 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.

catatan

Amazon 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,buildspec.yaml. Jika Anda mengganti nama file buildspec, masukkan nama di sini. Pastikan itu cocok dengan nama file yang ada di CodeCommit repositori.

DevOps

Tentukan logging.

Untuk melihat log untuk CloudWatch Acara Amazon, pertahankan pengaturan default. Atau Anda dapat menentukan nama grup atau logger tertentu.

DevOps
TugasDeskripsiKeterampilan 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
TugasDeskripsiKeterampilan 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
TugasDeskripsiKeterampilan 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
TugasDeskripsiKeterampilan 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
TugasDeskripsiKeterampilan 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