Otomatiskan manajemen pipeline dinamis untuk menerapkan solusi perbaikan terbaru di lingkungan Gitflow dengan menggunakan dan AWS Service CatalogAWS CodePipeline - AWS Prescriptive Guidance

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Otomatiskan manajemen pipeline dinamis untuk menerapkan solusi perbaikan terbaru di lingkungan Gitflow dengan menggunakan dan AWS Service CatalogAWS CodePipeline

Balaji Vedagiri, Faisal Shahdad, Shanmugam Shanker, dan Vivek Thangamuthu, Amazon Web Services

Ringkasan

catatan

AWS CodeCommit tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS CodeCommit dapat terus menggunakan layanan seperti biasa. Pelajari selengkapnya

Pola ini membahas skenario pengelolaan pipeline hotfix dinamis yang didedikasikan semata-mata untuk menerapkan solusi hotfix ke lingkungan produksi dengan aman. Solusinya diimplementasikan dan dikelola dengan menggunakan AWS Service Catalog portofolio dan produk. EventBridge Aturan Amazon digunakan untuk otomatisasi acara. Pembatasan diberlakukan dengan menggunakan batasan portofolio Service Catalog dan peran AWS Identity and Access Management (IAM) untuk pengembang. Hanya AWS Lambda fungsi yang diizinkan untuk meluncurkan produk Service Catalog, yang dipicu oleh EventBridge aturan. Pola ini dirancang untuk lingkungan dengan pengaturan Gitflow tertentu, yang dijelaskan dalam Informasi tambahan.

Biasanya, perbaikan terbaru diterapkan untuk mengatasi masalah kritis atau keamanan yang dilaporkan di lingkungan hidup, seperti Produksi. Perbaikan terbaru harus diterapkan langsung ke lingkungan Pementasan dan Produksi saja. Pipa Pementasan dan Produksi digunakan secara luas untuk permintaan pengembangan reguler. Pipeline ini tidak dapat digunakan untuk menerapkan perbaikan terbaru karena ada fitur berkelanjutan dalam jaminan kualitas yang tidak dapat dipromosikan ke Produksi. Untuk merilis perbaikan terbaru, pola ini menjelaskan pipeline dinamis dan berumur pendek dengan fitur keamanan berikut:

  • Pembuatan otomatis - Saluran hotfix dibuat secara otomatis setiap kali cabang hotfix dibuat di repositori. AWS CodeCommit

  • Pembatasan akses — Pengembang tidak memiliki akses untuk membuat pipeline ini di luar proses perbaikan terbaru.

  • Tahap terkontrol — Pipeline memiliki tahap terkontrol dengan token akses khusus, memastikan bahwa permintaan tarik (PR) hanya dapat dibuat sekali.

  • Tahap persetujuan — Tahapan persetujuan disertakan dalam jalur pipa untuk mendapatkan persetujuan yang diperlukan dari pemangku kepentingan terkait.

  • Penghapusan otomatis - Pipa hotfix secara otomatis dihapus setiap kali hotfix cabang dihapus di CodeCommit repositori setelah digabungkan dengan PR.

Prasyarat dan batasan

Prasyarat

  • Tiga aktif Akun AWS diperlukan sebagai berikut:

    • Akun alat - Untuk pengaturan integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD).

    • Akun panggung - Untuk pengujian penerimaan pengguna.

    • Akun produksi - Untuk pengguna akhir bisnis.

    • (Opsional) Tambahkan Akun AWS untuk bertindak sebagai akun QA. Akun ini diperlukan jika Anda menginginkan penyiapan pipeline utama, termasuk QA, dan solusi pipeline hotfix untuk pengujian.

  • AWS CloudFormation Tumpukan dengan kondisi opsional untuk diterapkan di akun QA menggunakan pipeline utama, jika diperlukan. Pola masih dapat diuji tanpa pengaturan pipeline utama dengan membuat dan menghapus hotfix cabang.

  • Bucket Amazon Simple Storage Service (Amazon S3) untuk menyimpan CloudFormation template yang digunakan untuk membuat produk Service Catalog.

  • Buat aturan persetujuan PR untuk CodeCommit repositori sesuai dengan persyaratan kepatuhan (setelah membuat repositori).

  • Batasi izin IAM dari pengembang dan arahan tim untuk menolak eksekusi fungsi prcreation-lambda Lambda karena harus dipanggil hanya dari pipeline.

Batasan

  • CloudFormation Penyedia digunakan dalam tahap penerapan, dan aplikasi dikerahkan menggunakan set CloudFormation perubahan. Jika Anda ingin menggunakan opsi penyebaran yang berbeda, ubah CodePipeline tumpukan sesuai kebutuhan.

  • Pola ini menggunakan AWS CodeBuild dan file konfigurasi lainnya untuk menyebarkan layanan mikro sampel. Jika Anda memiliki jenis beban kerja yang berbeda (misalnya, beban kerja tanpa server), Anda harus memperbarui semua konfigurasi yang relevan.

  • Pola ini menyebarkan aplikasi dalam satu Wilayah AWS (misalnya, US East (Virginia N.) us-east-1) di seberang. Akun AWS Untuk menyebarkan di beberapa Wilayah, ubah referensi Wilayah dalam perintah dan tumpukan.

  • Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat layanan AWS menurut Wilayah. Untuk titik akhir tertentu, lihat Titik akhir dan kuota layanan, dan pilih tautan untuk layanan.

Arsitektur

Diagram di bagian ini menyediakan alur kerja untuk peristiwa siklus hidup pembuatan dan untuk peristiwa siklus hidup penghapusan.

Alur kerja untuk membuat peristiwa siklus hidup.

Diagram sebelumnya untuk membuat peristiwa siklus hidup menunjukkan hal berikut:

  1. Pengembang membuat hotfix-* cabang di CodeCommit repositori untuk mengembangkan solusi terkait hotfix.

  2. Acara pembuatan hotfix-* cabang ditangkap melalui EventBridge aturan. Rincian acara termasuk nama repositori dan nama cabang.

  3. EventBridge Aturan memanggil AWS Lambda fungsihotfix-lambda-function. EventBridge Aturan meneruskan informasi acara ke fungsi Lambda sebagai input.

  4. Fungsi Lambda memproses input untuk mengambil nama repositori dan nama cabang. Ini meluncurkan produk Service Catalog dengan nilai yang diambil dari input yang diproses.

  5. Produk Service Catalog mencakup pengaturan pipeline yang akan menyebarkan solusi ke lingkungan Stage dan Production. Blok pipa mencakup tahapan sumber, pembuatan, dan penerapan. Juga, ada tahap persetujuan manual untuk mempromosikan penyebaran untuk lingkungan Produksi.

  6. Tahap sumber mengambil kode dari repositori dan hotfix-* cabang yang dibuat pada langkah pertama. Kode diteruskan ke tahap pembuatan melalui bucket Amazon S3 untuk artefak. Pada tahap build, image container dibuat yang menyertakan hotfix yang dikembangkan di hotfix-* cabang dan didorong ke Amazon Elastic Container Registry (Amazon ECR).

  7. Tahap penerapan ke lingkungan panggung memperbarui Amazon Elastic Container Service (Amazon ECS) dengan image container terbaru yang menyertakan hotfix. Hotfix digunakan dengan membuat dan mengeksekusi set perubahan. CloudFormation

  8. Fungsi prcreation-lambda Lambda dipanggil setelah penerapan berhasil di lingkungan Stage. Fungsi Lambda ini membuat PR dari hotfix-* cabang ke develop dan main cabang repositori. Fungsi Lambda memastikan bahwa perbaikan yang dikembangkan di hotfix-* cabang terbelakang dan disertakan dalam penerapan berikutnya.

  9. Tahap persetujuan manual membantu memastikan bahwa pemangku kepentingan yang diperlukan meninjau perbaikan dan memberikan persetujuan untuk diterapkan dalam Produksi.

  10. Tahap penerapan ke lingkungan produksi memperbarui Amazon ECS dengan gambar kontainer terbaru yang menyertakan perbaikan terbaru. Hotfix digunakan dengan membuat dan mengeksekusi set perubahan. CloudFormation

Alur kerja untuk menghapus peristiwa siklus hidup.

Diagram sebelumnya untuk menghapus peristiwa siklus hidup menunjukkan hal berikut:

  1. Pengembang menghapus hotfix-* cabang setelah berhasil menyebarkan hotfix ke lingkungan produksi.

  2. Peristiwa penghapusan hotfix-* cabang ditangkap melalui aturan. EventBridge Rincian acara termasuk nama repositori dan nama cabang.

  3. EventBridge Aturan tersebut memanggil fungsi Lambda. EventBridge Aturan meneruskan informasi acara ke fungsi Lambda sebagai input.

  4. Fungsi Lambda memproses input untuk mengambil nama repositori dan nama cabang. Fungsi Lambda menentukan produk Service Catalog masing-masing dari input yang diteruskan dan kemudian mengakhiri produk.

  5. Penghentian produk yang disediakan oleh Service Catalog menghapus pipeline dan sumber daya yang relevan yang dibuat sebelumnya dalam produk tersebut.

Otomatisasi dan skala

  • Pola ini mencakup EventBridge aturan dan fungsi Lambda, yang dapat menangani beberapa permintaan pembuatan cabang hotfix secara paralel. Fungsi Lambda menyediakan produk Service Catalog untuk aturan acara yang cocok.

  • Penyiapan pipeline ditangani dengan menggunakan produk Service Catalog, yang menyediakan kemampuan kontrol versi. Solusi ini juga menskalakan secara otomatis untuk menangani beberapa pengembangan perbaikan terbaru untuk aplikasi yang sama secara paralel.

  • Fungsi prcreation-lambda memastikan bahwa perubahan hotfix ini juga digabungkan kembali ke dalam main dan develop cabang melalui pembuatan permintaan tarik otomatis. Pendekatan ini penting untuk menjaga agar develop cabang tetap up to date dengan semua perbaikan dan menghindari potensi regresi kode. main Proses ini membantu menjaga konsistensi di seluruh cabang dan mencegah regresi kode dengan memastikan bahwa semua cabang berumur panjang memiliki perbaikan terbaru.

Alat

Layanan AWS

  • AWS CloudFormationmembantu Anda menyiapkan AWS sumber daya, menyediakannya dengan cepat dan konsisten, dan mengelolanya sepanjang siklus hidupnya di seluruh Akun AWS dan. Wilayah AWS

  • AWS CodeBuildadalah layanan build terkelola penuh yang membantu Anda mengkompilasi kode sumber, menjalankan pengujian unit, dan menghasilkan artefak yang siap digunakan.

  • AWS CodeCommitadalah layanan kontrol versi yang membantu Anda menyimpan dan mengelola repositori Git secara pribadi, tanpa perlu mengelola sistem kontrol sumber Anda sendiri. AWS CodeCommit tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS CodeCommit dapat terus menggunakan layanan seperti biasa. Untuk informasi selengkapnya, lihat Cara memigrasikan AWS CodeCommit repositori Anda ke penyedia Git lain.

  • AWS CodePipelinemembantu Anda dengan cepat memodelkan dan mengkonfigurasi berbagai tahapan rilis perangkat lunak dan mengotomatiskan langkah-langkah yang diperlukan untuk merilis perubahan perangkat lunak secara terus menerus.

  • Amazon Elastic Container Registry (Amazon ECR) adalah layanan registri gambar kontainer terkelola yang aman, terukur, dan andal.

  • Amazon Elastic Container Service (Amazon ECS) adalah layanan manajemen kontainer yang cepat dan dapat diskalakan yang membantu Anda menjalankan, menghentikan, dan mengelola kontainer di klaster.

  • AWS Key Management Service (AWS KMS) membantu Anda membuat dan mengontrol kunci kriptografi untuk membantu melindungi data Anda.

  • AWS Service Catalogmembantu Anda mengelola katalog layanan TI secara terpusat yang disetujui. AWS Pengguna akhir dapat dengan cepat men-deploy hanya layanan IT yang disetujui yang mereka butuhkan, mengikuti batasan yang ditetapkan oleh organisasi Anda.

  • Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.

Alat lainnya

Repositori kode

Kode untuk pola ini tersedia di repositori GitHub dynamic_hotfix_codepipeline.

Praktik terbaik

Tinjau dan sesuaikan peran IAM dan kebijakan kontrol layanan (SCP) di lingkungan Anda untuk memastikan bahwa mereka membatasi akses dengan tepat. Ini sangat penting untuk mencegah tindakan apa pun yang dapat mengesampingkan langkah-langkah keamanan yang termasuk dalam pola ini. Ikuti prinsip hak istimewa terkecil dan berikan izin minimum yang diperlukan untuk melakukan tugas. Untuk informasi selengkapnya, lihat Berikan hak istimewa terkecil dan praktik terbaik Keamanan dalam dokumentasi IAM.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Kloning repositori.

Untuk mengkloning repositori sampel ke direktori baru di lokasi kerja Anda, jalankan perintah berikut:

git clone git@github.com:aws-samples/dynamic_hotfix_codepipeline.git
AWS DevOps

Ekspor variabel lingkungan untuk penyebaran CloudFormation tumpukan.

Tentukan variabel lingkungan berikut yang akan digunakan sebagai masukan ke CloudFormation tumpukan nanti dalam pola ini.

  • ApplicationName- Variabel ini digunakan untuk memberi nama sumber daya yang dibuat untuk aplikasi, sehingga lebih mudah untuk melacaknya. Gunakan perintah berikut, ganti Applicationname dengan nama aplikasi Anda yang sebenarnya:

    export ApplicationName=<Applicationname>
  • BucketStartName- Variabel ini untuk penamaan bucket Amazon S3. Nama bucket S3 harus unik secara global di semua Akun AWS. Gunakan perintah berikut, ganti BucketName dengan nama unik untuk bucket S3 Anda:

export BucketStartName=<BucketName>
  • Nomor akun dan Wilayah — Variabel ini menyimpan Akun AWS nomor untuk lingkungan yang berbeda dan Wilayah penyebaran. Gunakan perintah berikut, ganti placeholder (seperti prodaccountnumber danregion) dengan Akun AWS nomor aktual Anda dan Wilayah AWS yang Anda gunakan.

    catatan

    QAAccountadalah opsional. Jika Anda ingin menggunakanQAAccount, atur dengan menggunakan parameter untuk tumpukan pipa utama.

export ProdAccount=<prodaccountnumber> export StageAccount=<stage/preprodaccountnumber> export QAAccount=<qaccountnumber> export ToolsAccount=<toolsaccountnumber> export DepRegion=<region>
AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Buat sumber daya yang diperlukan untuk CI/CD di akun alat.

Untuk menyebarkan CloudFormation tumpukan di akun alat, gunakan perintah berikut. (Hapus QAAccount parameter jika Anda tidak menggunakan akun QA untuk pengaturan.)

#InToolsAccount aws cloudformation deploy \ --template-file pre-requisites/pre-reqs.yaml \ --stack-name prereqs \ --parameter-overrides BucketStartName=${BucketStartName} \ ApplicationName=${ApplicationName} ProdAccount=${ProdAccount} \ StageAccount=${StageAccount} ToolsAccount=${ToolsAccount} \ QAAccount=${QAAccount} \ --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM --region ${DepRegion}

Catat sumber daya yang dibuat oleh CodeCommit repositori dan Amazon ECR dari tumpukan sebelumnya. Parameter ini diperlukan untuk mengatur main cabang pipa di langkah mendatang.

AWS DevOps

Buat sumber daya yang diperlukan untuk CI/CD akun beban kerja.

  1. Untuk mengemas CloudFormation template di setiap akun beban kerja (tahap, produksi, dan QA opsional), gunakan perintah berikut. Pada perintah berikut, ganti S3bucketpackage dengan nama bucket Amazon S3 yang ingin Anda gunakan untuk pengemasan.

    #InStageAccount aws cloudformation package \ --template-file pre-requisites/infrastack.yaml \ --s3-bucket <S3bucketpackage> \ --s3-prefix infraStack \ --region ${DepRegion} \ --output-template-file pre-requisites/infrastructure_stage.template #InProdAccount aws cloudformation package \ --template-file pre-requisites/infrastack.yaml \ --s3-bucket <S3bucketpackage> \ --s3-prefix infraStack \ --region ${DepRegion} \ --output-template-file pre-requisites/infrastructure_prod.template
  2. Untuk menyebarkan CloudFormation template di setiap akun beban kerja, gunakan perintah berikut:

    #InStageAccount aws cloudformation deploy --stack-name inframainstack \ --parameter-overrides ApplicationName=${ApplicationName} ToolsAccount=${ToolsAccount} DepRegion=${DepRegion} \ --template-file pre-requisites/infrastructure_stage.template --region ${DepRegion} --capabilities CAPABILITY_NAMED_IAM #InProdAccount aws cloudformation deploy --stack-name inframainstack \ --parameter-overrides ApplicationName=${ApplicationName} ToolsAccount=${ToolsAccount} DepRegion=${DepRegion} \ --template-file pre-requisites/infrastructure_prod.template --region ${DepRegion} --capabilities CAPABILITY_NAMED_IAM
AWS DevOps

Perbarui kebijakan bucket artefak S3 untuk mengizinkan akses akun beban kerja.

Untuk memperbarui prasyarat CloudFormation tumpukan di akun alat, gunakan perintah berikut untuk menambahkan semua izin yang diperlukan untuk akun beban kerja Tahap dan Produksi. (Hapus QAAccount parameter jika Anda tidak menggunakannya untuk pengaturan.)

#InToolsAccount aws cloudformation deploy \ --template-file pre-requisites/pre-reqs.yaml \ --stack-name prereqs \ --parameter-overrides BucketStartName=${BucketStartName} \ ApplicationName=${ApplicationName} ProdAccount=${ProdAccount} \ StageAccount=${StageAccount} ToolsAccount=${ToolsAccount} \ QAAccount=${QAAccount} PutPolicy=true \ --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM --region ${DepRegion}
AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Siapkan portofolio dan produk Service Catalog.

Untuk menyiapkan portofolio dan produk Service Catalog, lakukan hal berikut:

  1. Unggah template pipeline-main.yaml dan pipeline-hotfix.yaml dari repositori di direktori CodePipeline ke bucket Amazon S3 () yang ada di Wilayah yang ingin Anda terapkan ke (). Bucketname DepRegion

    #InToolsAccount aws s3 cp ./codepipeline/pipeline-main.yaml s3://<Bucketname>/pipeline-main.yaml aws s3 cp ./codepipeline/pipeline-hotfix.yaml s3://<Bucketname>/pipeline-hotfix.yaml
  2. Siapkan portofolio dan produk Service Catalog yang akan mengelola pipeline untuk main dan hotfix cabang. Catat detail dari Outputs bagian untuk MainProductId dan MainProductArtifactId dari tumpukan berikut. Informasi diperlukan pada langkah-langkah selanjutnya selama pengaturan pipa untuk main cabang.

    #InToolsAccount aws cloudformation deploy \ --template-file pre-requisites/servicecatalogsetup.yaml \ --stack-name servicecatalogsetup \ --parameter-overrides TemplateBucket=<Bucketname> \ --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM --region ${DepRegion}
  3. Menyediakan akses untuk peran IAM yang akan menyebarkan sumber daya di akun alat ke portofolio pipa utama portofolio Service Catalog. Gunakan portofolio ini untuk menyebarkan aplikasi dengan menggunakan main cabang. Untuk informasi selengkapnya tentang cara menyediakan akses, lihat Memberikan Akses kepada Pengguna di dokumentasi Service Catalog.

AWS DevOps

Siapkan fungsi Lambda.

Solusi ini menggunakan fungsi Lambda berikut untuk mengelola alur kerja hotfix:

  • hotfix-lambda-functionmenangani penyediaan produk Service Catalog saat hotfix cabang dibuat.

  • hotfix-cleanup-lambda-functionmengelola penghentian produk saat hotfix cabang dihapus.

  • prcreation-lambdamembuat permintaan tarik dari hotfix cabang ke cabang develop dan main cabang.

Untuk mengaktifkan fungsi Lambda untuk menyediakan dan menghentikan produk Service Catalog saat hotfix cabang dibuat atau dihapus melalui EventBridge aturan terkait, gunakan langkah-langkah berikut:

  1. Untuk membuat peran dan izin IAM untuk fungsi Lambda, gunakan perintah berikut untuk menyebarkan tumpukan: CloudFormation

    #InToolsAccount aws cloudformation deploy \ --template-file pre-requisites/lambdasetup.yaml \ --stack-name prsclambdasetup \ --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM --region ${DepRegion}
  2. Setelah penerapan stack, berikan hotfix-lambda-execution-role akses ke portofolio pipeline hotfix portofolio Service Catalog dengan menggunakan file. AWS Management Console Akses ini memungkinkan fungsi Lambda untuk meluncurkan atau menghentikan produk Service Catalog untuk cabang hotfix.

AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Siapkan pipa untuk main cabang.

Untuk mengatur pipeline untuk cabang utama, jalankan perintah berikut di akun alat. Ganti parameter untuk MainProductId dan MainProductArtifactId dengan nilai dari output servicecatalogsetup tumpukan.

#InToolsAccount aws servicecatalog provision-product \ --product-id <MainProductId> \ --provisioning-artifact-id <MainProductArtifactId> \ --provisioned-product-name "${ApplicationName}-main-pipeline" \ --provisioning-parameters Key=CodeCommitRepoName,Value="${ApplicationName}-repository" Key=ECRRepository,Value="${ApplicationName}-app" \ --region=${DepRegion}
AWS DevOps

Menyebarkan aplikasi menggunakan main cabang.

  1. Untuk mengkloning CodeCommit repositori yang dibuat di prereqs, gunakan perintah. git clone Untuk informasi selengkapnya, lihat Connect ke CodeCommit repositori dengan mengkloning repositori seperti yang dijelaskan dalam dokumentasi. CodeCommit

  2. Salin semua file aplikasi dari repotemplates direktori yang tersedia di repositori ke clone repositori lokal Anda (). ${ApplicationName}-repository Ubah file berikut untuk memperbarui ToolsAccount ID. Di setiap file, cari RegistryAccountid parameter dan atur nilainya ke ToolsAccount ID Anda. Komit perubahan ke CodeCommit repositori, dan dorong file ke cabang main dan develop cabang.

  3. Untuk memverifikasi penerapan aplikasi, pantau CodePipeline eksekusi dengan menggunakan file. AWS Management Console Setelah penyebaran selesai, akses aplikasi dengan menggunakan Application Load Balancer FQDN di lingkungan panggung. Konfirmasikan bahwa aplikasi berfungsi seperti yang diharapkan.

  4. Untuk menyetujui penerapan ke produksi, gunakan CodePipeline konsol untuk menemukan pipeline untuk aplikasi Anda. Temukan ApprovalToStart panggung. Tinjau perubahan dan, jika memuaskan, berikan persetujuan manual untuk melanjutkan penyebaran produksi.

AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Buat hotfix-* cabang dan komit perubahan.

Untuk membuat pipeline untuk hotfix-* cabang dan menerapkan perbaikan terbaru ke akun beban kerja, lakukan hal berikut:

  1. Buat cabang menggunakan nama yang dimulai dengan kata kuncihotfix. Misalnya, pola ini menggunakan hotfix-check1 cabang di repositori CodeCommit aplikasi ()${ApplicationName}-repository. Untuk langkah-langkah lebih rinci, lihat Connect to an AWS CodeCommit repositori dan perintah Git Dasar dalam dokumentasi. CodeCommit

  2. Verifikasi bahwa produk Service Catalog berhasil Hotfix CICD Pipeline disediakan secara dinamis untuk cabang. hotfix-check1 Nama produk yang disediakan dinamai setelah nama cabang hotfix ini dan nama repositori aplikasi. CodeCommit

  3. Lakukan beberapa perubahan kecil dalam file index.html, dan dorong ke CodeCommit repositori.

  4. Verifikasi bahwa CodePipeline eksekusi berhasil di lingkungan panggung. Untuk menyebarkan di lingkungan produksi, berikan persetujuan manual di CodePipeline.

  5. Konfirmasikan perubahan terlihat di halaman beranda aplikasi dengan menggunakan Application Load Balancer full qualified domain name (FQDN). FQDN tersedia di bagian. Outputs inframainstack-ALBStack-*

AWS DevOps

Hapus hotfix-check1 cabang.

Untuk menghapus hotfix-check1 cabang yang dibuat sebelumnya, lakukan hal berikut:

  1. Hapus hotfix-check1 cabang yang ada di repositori CodeCommit aplikasi.

  2. Verifikasi bahwa produk Service Catalog yang disediakan untuk hotfix-check1 cabang berhasil dihentikan.

AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Bersihkan sumber daya yang digunakan.

Untuk membersihkan sumber daya yang digunakan sebelumnya, lakukan hal berikut:

  1. Untuk mengurangi layanan Amazon ECS menjadi nol replika di akun beban kerja, gunakan perintah berikut:

    aws ecs update-service --cluster ${ApplicationName}-Cluster --service ${ApplicationName}-Service-stage --desired-count 0 --region ${DepRegion} aws ecs update-service --cluster ${ApplicationName}-Cluster --service ${ApplicationName}-Service-prod --desired-count 0 --region ${DepRegion}
  2. Mengakhiri produk Service Catalog yang disediakan untuk cabang. main

  3. Bersihkan objek yang dibuat di bucket Amazon S3 di akun alat. Hapus semua gambar Docker di Amazon ECR sebelum menghapus registri itu sendiri.

  4. Hapus peran IAM di bagian akses yang diberikan pada portofolio Service Catalog sebelum Anda menghapus portofolio Service Catalog.

  5. Hapus CloudFormation tumpukan yang digunakan di akun alat dan akun beban kerja.

##In Tools Account## aws cloudformation delete-stack --stack-name servicecatalogsetup --region ${DepRegion} aws cloudformation delete-stack --stack-name prlambdasetup --region ${DepRegion} aws cloudformation delete-stack --stack-name prereqs --region ${DepRegion}
##In Workload Accounts## aws cloudformation delete-stack --stack-name inframainstack --region ${DepRegion}

Untuk informasi selengkapnya, lihat Menghapus produk yang disediakan di dokumentasi Service Catalog.

AWS DevOps

Pemecahan Masalah

IsuSolusi

Perubahan yang Anda komit ke CodeCommit repositori tidak diterapkan.

Periksa CodeBuild log untuk kesalahan dalam tindakan build Docker. Lihat informasi yang lebih lengkap dalam dokumentasi CodeBuild .

Produk Service Catalog tidak sedang disediakan.

Tinjau CloudFormation tumpukan terkait untuk peristiwa yang gagal. Lihat informasi yang lebih lengkap dalam dokumentasi CloudFormation .

Sumber daya terkait

Informasi tambahan

Pola ini dirancang untuk lingkungan dengan pengaturan Gitflow yang diadopsi untuk alur kerja pengembangan dalam proses CI/CD . Pipa mengikuti siklus penyebaran yang dimulai dari pengembangan dan bergerak melalui jaminan kualitas (QA), tahap, dan lingkungan produksi. CI/CD Penyiapan mencakup dua cabang git dengan penerapan promosi ke lingkungan sebagai berikut:

  • developCabang menyebar ke lingkungan pengembangan.

  • mainCabang menyebar ke lingkungan QA, panggung, dan produksi.

Dalam pengaturan ini, merupakan tantangan untuk menerapkan perbaikan terbaru atau patch keamanan lebih cepat daripada siklus penerapan biasa sementara pengembangan aktif fitur baru sedang berlangsung. Proses khusus diperlukan untuk mengatasi perbaikan terbaru atau permintaan keamanan, memastikan bahwa lingkungan hidup tetap berfungsi dengan baik dan aman.

Namun, Anda dapat menggunakan opsi lain yang tersedia tanpa memerlukan proses penyebaran khusus jika:

  • CI/CD Proses ini dilengkapi dengan pengujian otomatis, seperti fungsional dan end-to-end pengujian, yang menghilangkan kebutuhan untuk pengujian manual dan mencegah penundaan penerapan ke produksi. Namun, jika pengujian otomatis tidak terintegrasi dengan baik ke dalam CI/CD proses, mendorong perbaikan kecil ke lingkungan produksi dapat menjadi kompleks dan rumit bagi pengembang. Ini karena mungkin ada fitur baru yang menunggu di lingkungan QA untuk persetujuan dan sign-off. Perbaikan terbaru atau perbaikan keamanan tidak dapat didorong ke produksi secara langsung secara bersamaan.

  • Tim pengembangan terus menerapkan fitur baru ke dalam lingkungan produksi, mengintegrasikan perbaikan terbaru atau patch keamanan ke dalam penerapan terjadwal dari setiap fitur baru. Dengan kata lain, pembaruan fitur berikutnya ke lingkungan produksi terdiri dari dua komponen: Penambahan fitur baru dan dimasukkannya hotfix atau patch keamanan. Namun, jika siklus penerapan tidak berkelanjutan, mungkin ada beberapa fitur baru yang sudah menunggu persetujuan di lingkungan QA. Mengelola versi yang berbeda dan memastikan perubahan yang benar diterapkan kembali kemudian dapat menjadi kompleks dan rawan kesalahan.

catatan

Jika Anda menggunakan versi 2 AWS CodePipeline dengan pemicu yang tepat yang disiapkan di hotfix cabang, Anda masih memerlukan proses khusus untuk menangani permintaan yang tidak terjadwal. Di versi 2, Anda dapat mengatur pemicu untuk permintaan push atau pull. Eksekusi akan segera diantri atau dieksekusi, tergantung pada keadaan pipa sebelumnya. Namun, dengan pipa khusus, perbaikan diterapkan segera ke lingkungan produksi, memastikan bahwa masalah mendesak diselesaikan tanpa penundaan.