View a markdown version of this page

Amazon Elastic Container Service dan referensi tindakan CodeDeploy penerapan biru-hijau - AWS CodePipeline

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

Amazon Elastic Container Service dan referensi tindakan CodeDeploy penerapan biru-hijau

Anda dapat mengonfigurasi pipeline AWS CodePipeline yang menerapkan aplikasi kontainer menggunakan blue/green penerapan. Dalam blue/green penerapan, Anda dapat meluncurkan versi baru aplikasi Anda bersama versi lama, dan Anda dapat menguji versi baru sebelum mengalihkan lalu lintas ke sana. Anda juga dapat memantau proses penerapan dan memutar kembali dengan cepat jika ada masalah.

Pipeline yang telah selesai mendeteksi perubahan pada gambar atau file definisi tugas Anda dan digunakan CodeDeploy untuk merutekan dan menyebarkan lalu lintas ke cluster Amazon ECS dan penyeimbang beban. CodeDeploy membuat pendengar baru pada penyeimbang beban Anda yang dapat menargetkan tugas baru Anda melalui port khusus. Anda juga dapat mengonfigurasi pipeline untuk menggunakan lokasi sumber, seperti CodeCommit repositori, tempat definisi tugas Amazon ECS Anda disimpan.

Sebelum membuat pipeline, Anda harus telah membuat sumber daya Amazon ECS, sumber CodeDeploy daya, dan penyeimbang beban dan grup target. Anda harus sudah menandai dan menyimpan gambar di repositori gambar Anda, dan mengunggah definisi tugas dan AppSpec file ke repositori file Anda.

catatan

Topik ini menjelaskan tindakan Amazon ECS to CodeDeploy blue/green Deployment untuk CodePipeline. Untuk informasi referensi tentang tindakan penerapan standar Amazon ECS di CodePipeline, lihatReferensi tindakan penyebaran Amazon Elastic Container Service.

Tipe tindakan

  • Kategori: Deploy

  • Pemilik: AWS

  • Penyedia: CodeDeployToECS

  • Versi: 1

Parameter konfigurasi

ApplicationName

Wajib: Ya

Nama aplikasi di CodeDeploy. Sebelum Anda membuat pipeline Anda, Anda harus sudah membuat aplikasi di CodeDeploy.

DeploymentGroupName

Wajib: Ya

Grup penerapan yang ditentukan untuk kumpulan tugas Amazon ECS yang Anda buat untuk CodeDeploy aplikasi Anda. Sebelum membuat pipeline, Anda harus sudah membuat grup penerapan di CodeDeploy.

TaskDefinitionTemplateArtifact

Wajib: Ya

Nama artefak masukan yang menyediakan file definisi tugas ke tindakan penerapan. Ini umumnya nama artefak keluaran dari aksi sumber. Saat Anda menggunakan konsol, nama default untuk artefak keluaran tindakan sumber adalahSourceArtifact.

AppSpecTemplateArtifact

Wajib: Ya

Nama artefak masukan yang menyediakan AppSpec file ke tindakan penerapan. Nilai ini diperbarui saat pipeline Anda berjalan. Ini umumnya nama artefak keluaran dari aksi sumber. Saat Anda menggunakan konsol, nama default untuk artefak keluaran tindakan sumber adalahSourceArtifact. Untuk TaskDefinition dalam AppSpec file, Anda dapat menyimpan teks <TASK_DEFINITION> placeholder seperti yang ditunjukkan di sini.

AppSpecTemplatePath

Wajib: Tidak

Nama file AppSpec file yang disimpan di lokasi file sumber pipeline, seperti CodeCommit repositori pipeline Anda. Nama file default adalahappspec.yaml. Jika AppSpec file Anda memiliki nama yang sama dan disimpan di tingkat root di repositori file Anda, Anda tidak perlu memberikan nama file. Jika jalur bukan default, masukkan jalur dan nama file.

TaskDefinitionTemplatePath

Wajib: Tidak

Nama file definisi tugas yang disimpan di lokasi sumber file pipeline, seperti CodeCommit repositori pipeline Anda. Nama file default adalahtaskdef.json. Jika file definisi tugas Anda memiliki nama yang sama dan disimpan di tingkat root di repositori file Anda, Anda tidak perlu memberikan nama file. Jika jalur bukan default, masukkan jalur dan nama file.

Gambar <Number>ArtifactName

Wajib: Tidak

Nama artefak masukan yang menyediakan gambar ke tindakan penerapan. Ini umumnya artefak keluaran repositori gambar, seperti output dari tindakan sumber Amazon ECR.

Nilai yang tersedia untuk <Number> adalah 1 hingga 4.

Gambar <Number>ContainerName

Wajib: Tidak

Nama gambar yang tersedia dari repositori gambar, seperti repositori sumber Amazon ECR.

Nilai yang tersedia untuk <Number> adalah 1 hingga 4.

Artefak masukan

  • Jumlah Artefak: 1 to 5

  • Deskripsi: T CodeDeployToECS indakan pertama mencari file definisi tugas dan AppSpec file di repositori file sumber, selanjutnya mencari gambar di repositori gambar, kemudian secara dinamis menghasilkan revisi baru definisi tugas, dan akhirnya menjalankan AppSpec perintah untuk menyebarkan set tugas dan wadah ke cluster.

    T CodeDeployToECS indakan mencari imageDetail.json file yang memetakan URI gambar ke gambar. Saat Anda melakukan perubahan pada repositori gambar Amazon ECR Anda, tindakan sumber ECR pipeline akan membuat imageDetail.json file untuk komit tersebut. Anda juga dapat menambahkan imageDetail.json file secara manual untuk pipeline di mana tindakan tidak otomatis. Untuk informasi tentang imageDetail.json file, lihatDetail.json file gambar untuk tindakan blue/green penyebaran Amazon ECS.

    T CodeDeployToECS indakan secara dinamis menghasilkan revisi baru dari definisi tugas. Pada fase ini, tindakan ini menggantikan placeholder dalam file definisi tugas menjadi URI gambar yang diambil dari file gambarDetail.json . Misalnya, jika Anda menetapkan IMAGE1_NAME sebagai Image1ContainerName parameter, Anda harus menentukan placeholder <IMAGE1_NAME>sebagai nilai bidang gambar dalam file definisi tugas Anda. Dalam hal ini, CodeDeployToECS tindakan menggantikan placeholder <IMAGE1_NAME>menjadi URI gambar aktual yang diambil dari gambar Detail.json di artefak yang Anda tentukan sebagai. Image1ArtifactName

    Untuk pembaruan definisi tugas, CodeDeploy AppSpec.yaml file berisi TaskDefinition properti.

    TaskDefinition: <TASK_DEFINITION>

    Properti ini akan diperbarui oleh CodeDeployToECS tindakan setelah definisi tugas baru dibuat.

    <TASK_DEFINITION>Untuk nilai TaskDefinition bidang, teks placeholder harus. T CodeDeployToECS indakan menggantikan placeholder ini dengan ARN aktual dari definisi tugas yang dihasilkan secara dinamis.

Artefak keluaran

  • Jumlah Artefak: 0

  • Deskripsi: Artefak keluaran tidak berlaku untuk jenis tindakan ini.

Izin peran layanan: CodeDeployToECS tindakan

Untuk CodeDeployToECS tindakan (pener blue/green apan), berikut ini adalah izin minimum yang diperlukan untuk membuat pipeline dengan tindakan penerapan CodeDeploy ke Amazon ECS blue/green.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCodeDeployDeploymentActions", "Action": [ "codedeploy:CreateDeployment", "codedeploy:GetDeployment" ], "Resource": [ "arn:aws:codedeploy:*:111122223333:deploymentgroup:[[ApplicationName]]/*" ], "Effect": "Allow" }, { "Sid": "AllowCodeDeployApplicationActions", "Action": [ "codedeploy:GetApplication", "codedeploy:GetApplicationRevision", "codedeploy:RegisterApplicationRevision" ], "Resource": [ "arn:aws:codedeploy:*:111122223333:application:[[ApplicationName]]", "arn:aws:codedeploy:*:111122223333:application:[[ApplicationName]]/*" ], "Effect": "Allow" }, { "Sid": "AllowCodeDeployDeploymentConfigAccess", "Action": [ "codedeploy:GetDeploymentConfig" ], "Resource": [ "arn:aws:codedeploy:*:111122223333:deploymentconfig:*" ], "Effect": "Allow" }, { "Sid": "AllowECSRegisterTaskDefinition", "Action": [ "ecs:RegisterTaskDefinition" ], "Resource": [ "*" ], "Effect": "Allow" }, { "Sid": "AllowPassRoleToECS", "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::111122223333:role/[[PassRoles]]" ], "Condition": { "StringEquals": { "iam:PassedToService": [ "ecs.amazonaws.com", "ecs-tasks.amazonaws.com" ] } } } ] }

Anda dapat memilih untuk menggunakan otorisasi penandaan di Amazon ECS. Dengan memilih, Anda harus memberikan izin berikut:ecs:TagResource. Untuk informasi selengkapnya tentang cara ikut serta menentukan apakah izin diperlukan dan otorisasi tag diberlakukan, lihat Men andai garis waktu otorisasi di Panduan Pengembang Layanan Kontainer Amazon Elastic.

Anda juga harus menambahkan iam:PassRole izin untuk menggunakan peran IAM untuk tugas. Untuk informasi selengkapnya, lihat Per an IAM eksekusi tugas Amazon ECS dan Peran IAM untuk Tugas.

Anda juga dapat menambahkan ecs-tasks.amazonaws.com ke daftar layanan di bawah iam:PassedToService kondisi, seperti yang ditunjukkan pada contoh di atas.

Deklarasi tindakan

YAML
Name: Deploy Actions: - Name: Deploy ActionTypeId: Category: Deploy Owner: AWS Provider: CodeDeployToECS Version: '1' RunOrder: 1 Configuration: AppSpecTemplateArtifact: SourceArtifact ApplicationName: ecs-cd-application DeploymentGroupName: ecs-deployment-group Image1ArtifactName: MyImage Image1ContainerName: IMAGE1_NAME TaskDefinitionTemplatePath: taskdef.json AppSpecTemplatePath: appspec.yaml TaskDefinitionTemplateArtifact: SourceArtifact OutputArtifacts: [] InputArtifacts: - Name: SourceArtifact - Name: MyImage Region: us-west-2 Namespace: DeployVariables
JSON
{ "Name": "Deploy", "Actions": [ { "Name": "Deploy", "ActionTypeId": { "Category": "Deploy", "Owner": "AWS", "Provider": "CodeDeployToECS", "Version": "1" }, "RunOrder": 1, "Configuration": { "AppSpecTemplateArtifact": "SourceArtifact", "ApplicationName": "ecs-cd-application", "DeploymentGroupName": "ecs-deployment-group", "Image1ArtifactName": "MyImage", "Image1ContainerName": "IMAGE1_NAME", "TaskDefinitionTemplatePath": "taskdef.json", "AppSpecTemplatePath": "appspec.yaml", "TaskDefinitionTemplateArtifact": "SourceArtifact" }, "OutputArtifacts": [], "InputArtifacts": [ { "Name": "SourceArtifact" }, { "Name": "MyImage" } ], "Region": "us-west-2", "Namespace": "DeployVariables" } ] }

Sumber daya terkait berikut dapat membantu Anda saat Anda mengerjakan tindakan ini.

  • Tutorial: Buat pipeline dengan sumber dan ECS-to-CodeDeploy penerapan Amazon ECR— Tutorial ini memandu Anda melalui pembuatan sumber daya Amazon ECS yang Anda butuhkan untuk blue/green penerapan. CodeDeploy Tutorial ini menunjukkan cara mendorong gambar Docker ke Amazon ECR dan membuat definisi tugas Amazon ECS yang mencantumkan nama gambar Docker Anda, nama wadah, nama layanan Amazon ECS, dan konfigurasi penyeimbang beban. Tutorial ini kemudian memandu Anda melalui pembuatan AppSpec file dan pipeline untuk penerapan Anda.

    catatan

    Topik dan tutorial ini menjelaskan CodeDeploy/ECS blue/green tindakan untuk CodePipeline. Untuk informasi tentang tindakan standar ECS di CodePipeline, lihat Tutorial: Penerapan Berkelanjutan dengan CodePipeline.

  • AWS CodeDeploy Panduan Pengguna — Untuk informasi tentang cara menggunakan blue/green penyeimbang beban, pendengar produksi, grup target, dan aplikasi Amazon ECS Anda dalam penerapan, lihat Tutorial: Menyebarkan Layanan Amazon ECS. Informasi referensi dalam Panduan AWS CodeDeploy Pengguna ini memberikan gambaran umum untuk penerapan blue/green dengan Amazon ECS dan. AWS CodeDeploy

  • Panduan Pengembang Amazon Elastic Container Service — Untuk informasi tentang bekerja dengan gambar dan wadah Docker, layanan dan cluster ECS, dan set tugas ECS, lihat Apa itu Amazon ECS?