

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 Catalog AWS CodePipeline
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions"></a>

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

## Ringkasan
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-summary"></a>

**catatan**  
AWS CodeCommit tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS CodeCommit dapat terus menggunakan layanan seperti biasa. [Pelajari selengkapnya](https://aws.amazon.com/blogs/devops/how-to-migrate-your-aws-codecommit-repository-to-another-git-provider)

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](#automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-additional).

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** - Pipeline 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
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-prereqs"></a>

**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 pengaturan 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](https://github.com/aws-samples/dynamic_hotfix_codepipeline/blob/main/pre-requisites/lambdasetup.yaml#L55) hanya dari pipeline.

**Batasan**
+  CloudFormation Penyedia digunakan dalam tahap penerapan, dan aplikasi digunakan 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 AWS Region (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 AWS Region. Untuk ketersediaan Wilayah, lihat [layanan AWS menurut Wilayah](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Untuk titik akhir tertentu, lihat [Titik akhir dan kuota layanan](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), dan pilih tautan untuk layanan.

## Arsitektur
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-architecture"></a>

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.](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/64311acc-8c0f-4734-aa1b-74345d86c752/images/3939f77c-4221-4c23-a3a1-3e8a294b2b32.png)


Diagram sebelumnya untuk membuat peristiwa siklus hidup menunjukkan hal berikut:

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

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

1.  EventBridge Aturan memanggil AWS Lambda fungsi`hotfix-lambda-function`. EventBridge Aturan meneruskan informasi acara ke fungsi Lambda sebagai input.

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

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

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

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

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

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

1. 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.](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/64311acc-8c0f-4734-aa1b-74345d86c752/images/192aa897-bd9b-4a9f-804e-340371612b3b.png)


Diagram sebelumnya untuk menghapus peristiwa siklus hidup menunjukkan hal berikut:

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

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

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

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

1. 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](https://github.com/aws-samples/dynamic_hotfix_codepipeline/blob/main/pre-requisites/lambdasetup.yaml#L55) 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
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-tools"></a>

**Layanan AWS**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)membantu Anda menyiapkan AWS sumber daya, menyediakannya dengan cepat dan konsisten, dan mengelolanya sepanjang siklus hidupnya di seluruh Akun AWS dan. AWS Region
+ [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 CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)adalah 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](https://aws.amazon.com/blogs/devops/how-to-migrate-your-aws-codecommit-repository-to-another-git-provider/).
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)membantu 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](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)) adalah layanan registri gambar kontainer terkelola yang aman, terukur, dan andal.
+ [Amazon Elastic Container Service (Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)) 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)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) membantu Anda membuat dan mengontrol kunci kriptografi untuk membantu melindungi data Anda.
+ [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html)membantu 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.

**Alat-alat lainnya**
+ [CloudFormation Linter (cfn-lint)](https://github.com/aws-cloudformation/cfn-lint) [adalah linter yang memeriksa template CloudFormation YAMAL atau JSON terhadap spesifikasi sumber daya. CloudFormation ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification.html) Ini juga melakukan pemeriksaan lain, seperti memeriksa nilai yang valid untuk properti sumber daya dan kepatuhan terhadap praktik terbaik.
+ [cfn-nag](https://github.com/stelligent/cfn_nag) adalah alat open source yang mengidentifikasi potensi masalah keamanan dalam CloudFormation template dengan mencari pola.
+ [Docker](https://www.docker.com/) adalah seperangkat produk platform as a service (PaaS) yang menggunakan virtualisasi pada tingkat sistem operasi untuk mengirimkan perangkat lunak dalam wadah. Pola ini menggunakan Docker untuk membangun dan menguji gambar kontainer secara lokal.
+ [Git](https://git-scm.com/docs) adalah sistem kontrol versi terdistribusi open-source.

**Repositori kode**

Kode untuk pola ini tersedia di repositori GitHub [dynamic\_hotfix\_codepipeline](https://github.com/aws-samples/dynamic_hotfix_codepipeline).

## Praktik terbaik
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-best-practices"></a>

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) dan [praktik terbaik Keamanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dalam dokumentasi IAM.

## Epik
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-epics"></a>

### Mengatur lingkungan kerja
<a name="set-up-the-work-environment"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Kloning repositori. | Untuk mengkloning [repositori](https://github.com/aws-samples/dynamic_hotfix_codepipeline) sampel ke direktori baru di lokasi kerja Anda, jalankan perintah berikut:<pre>git clone git@github.com:aws-samples/dynamic_hotfix_codepipeline.git</pre> | 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.[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html)<pre>export BucketStartName=<BucketName></pre>[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html)<pre>export ProdAccount=<prodaccountnumber><br />export StageAccount=<stage/preprodaccountnumber><br />export QAAccount=<qaccountnumber><br />export ToolsAccount=<toolsaccountnumber><br />export DepRegion=<region></pre> | AWS DevOps | 

### Mengatur prasyarat yang diperlukan di Akun AWS
<a name="set-up-prerequisites-required-in-aws-accounts"></a>


| Tugas | Deskripsi | Keterampilan 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.)<pre>#InToolsAccount<br />aws cloudformation deploy \<br />    --template-file pre-requisites/pre-reqs.yaml \<br />    --stack-name prereqs \<br />    --parameter-overrides BucketStartName=${BucketStartName} \<br />    ApplicationName=${ApplicationName} ProdAccount=${ProdAccount} \<br />    StageAccount=${StageAccount} ToolsAccount=${ToolsAccount} \<br />    QAAccount=${QAAccount} \<br />    --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM --region ${DepRegion}</pre><br />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. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | 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.)<pre>#InToolsAccount<br />aws cloudformation deploy \<br />    --template-file pre-requisites/pre-reqs.yaml \<br />    --stack-name prereqs \<br />    --parameter-overrides BucketStartName=${BucketStartName} \<br />    ApplicationName=${ApplicationName} ProdAccount=${ProdAccount} \<br />    StageAccount=${StageAccount} ToolsAccount=${ToolsAccount} \<br />    QAAccount=${QAAccount} PutPolicy=true \<br />    --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM --region ${DepRegion}</pre> | AWS DevOps | 

### Siapkan fungsi Lambda dan sumber daya Service Catalog di akun alat
<a name="set-up-lam-function-and-sc-resources-in-tools-account"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Siapkan portofolio dan produk Service Catalog. | Untuk menyiapkan portofolio dan produk Service Catalog, lakukan hal berikut:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 
| Siapkan fungsi Lambda. | Solusi ini menggunakan fungsi Lambda berikut untuk mengelola alur kerja hotfix:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html)<br />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:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 

### Buat pipeline untuk cabang utama dan terapkan aplikasi di akun beban kerja
<a name="create-pipeline-for-main-branch-and-deploy-application-in-workload-accounts"></a>


| Tugas | Deskripsi | Keterampilan 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.<pre>#InToolsAccount<br />aws servicecatalog provision-product \<br />    --product-id <MainProductId> \<br />    --provisioning-artifact-id <MainProductArtifactId> \<br />    --provisioned-product-name "${ApplicationName}-main-pipeline" \<br />    --provisioning-parameters Key=CodeCommitRepoName,Value="${ApplicationName}-repository" Key=ECRRepository,Value="${ApplicationName}-app" \<br />    --region=${DepRegion}</pre> | AWS DevOps | 
| Menyebarkan aplikasi menggunakan `main` cabang. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 

### Buat pipeline untuk cabang hotfix-\* dan terapkan perbaikan terbaru
<a name="create-the-pipeline-for-a-hotfix--branch-and-deploy-the-hotfix"></a>


| Tugas | Deskripsi | Keterampilan 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:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 
| Hapus `hotfix-check1` cabang. | Untuk menghapus `hotfix-check1` cabang yang dibuat sebelumnya, lakukan hal berikut:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 

### Pembersihan sumber daya
<a name="clean-up-resources"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Bersihkan sumber daya yang digunakan. | Untuk membersihkan sumber daya yang digunakan sebelumnya, lakukan hal berikut:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html)<pre>##In Tools Account##<br />aws cloudformation delete-stack --stack-name servicecatalogsetup --region ${DepRegion}<br />aws cloudformation delete-stack --stack-name prlambdasetup --region ${DepRegion}<br />aws cloudformation delete-stack --stack-name prereqs --region ${DepRegion}</pre><pre>##In Workload Accounts##<br />aws cloudformation delete-stack --stack-name inframainstack --region ${DepRegion}</pre><br />Untuk informasi selengkapnya, lihat [Menghapus produk yang disediakan di dokumentasi](https://docs.aws.amazon.com/servicecatalog/latest/userguide/enduser-delete.html) Service Catalog. | AWS DevOps | 

## Pemecahan masalah
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-troubleshooting"></a>


| Isu | Solusi | 
| --- | --- | 
| 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 ](https://docs.aws.amazon.com/codebuild/latest/userguide/troubleshooting.html). | 
| Produk Service Catalog tidak sedang disediakan. | Tinjau CloudFormation tumpukan terkait untuk peristiwa yang gagal. Lihat informasi yang lebih lengkap dalam [dokumentasi CloudFormation ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html). | 

## Sumber daya terkait
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-resources"></a>
+ [Perintah Git Dasar](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-basic-git.html)
+ [Mengonfigurasi kebijakan IAM untuk membatasi push dan merge ke cabang](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-conditional-branch.html#how-to-conditional-branch-create-policy)
+ [Connect ke AWS CodeCommit repositori](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html)
+ [Memberikan akses ke pengguna](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/catalogs_portfolios_users.html)
+ [Mendorong gambar Docker ke repositori pribadi Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html)
+ [Pemecahan Masalah AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/troubleshooting.html)
+ [Apa itu AWS CodePipeline?](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)

## Informasi tambahan
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-additional"></a>

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:
+ `develop`Cabang menyebar ke lingkungan pengembangan.
+ `main`Cabang 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](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-types.html#:~:text=V2%20type%20pipelines%20have%20the%20same%20structure) 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.