View a markdown version of this page

Referensi tindakan Amazon EC2 - AWS CodePipeline

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

Referensi tindakan Amazon EC2

Anda menggunakan EC2 tindakan Amazon EC2 untuk menyebarkan kode aplikasi ke armada penerapan Anda. Armada penerapan Anda dapat terdiri dari instans Amazon EC2 Linux atau SSM-managed node Linux. Instans Anda harus menginstal agen SSM.

catatan

Tindakan ini hanya mendukung jenis instance Linux. Ukuran armada maksimum yang didukung adalah 500 instans.

Tindakan akan memilih sejumlah instance berdasarkan maksimum yang ditentukan. Instans yang gagal dari instance sebelumnya akan dipilih terlebih dahulu. Tindakan akan melewati penerapan pada instance tertentu jika instance telah menerima penyebaran artefak input yang sama, seperti kasus di mana tindakan gagal sebelumnya.

catatan

Tindakan ini hanya didukung untuk pipeline tipe V2.

Tipe tindakan

  • Kategori: Deploy

  • Pemilik: AWS

  • Penyedia: EC2

  • Versi: 1

Parameter konfigurasi

InstanceTagKey

Wajib: Ya

Kunci tag instans yang Anda buat di Amazon EC2, sepertiName.

InstanceTagValue

Wajib: Tidak

Nilai tag instans yang Anda buat di Amazon EC2, sepertimy-instances.

Ketika nilai ini tidak ditentukan, semua instance dengan InstanceTagKey akan dicocokkan.

InstanceType

Wajib: Ya

Jenis instans atau node SSM yang dibuat di Amazon EC2. Nilai yang valid adalah EC2 dan SSM_MANAGED_NODE.

Anda harus telah membuat, menandai, dan menginstal agen SSM pada semua instance.

catatan

Saat membuat instance, Anda membuat atau menggunakan peran instans EC2 yang ada. Untuk menghindari Access Denied kesalahan, Anda harus menambahkan izin bucket S3 ke peran instance untuk memberikan izin instance ke bucket CodePipeline artefak. Buat peran default atau perbarui peran Anda yang ada dengan s3:GetObject izin yang dicakup ke bucket artefak untuk Wilayah pipeline Anda.

TargetDirectory

Diperlukan: Ya (Jika skrip ditentukan)

Direktori yang akan digunakan pada instans Amazon EC2 Anda untuk menjalankan skrip.

DeploySpec

Diperlukan: Ya (Jika spesifikasi penerapan ditentukan)

File yang akan digunakan untuk mengkonfigurasi instalasi penerapan dan peristiwa siklus hidup. Untuk deskripsi dan informasi bidang spesifikasi penerapan, lihatTerapkan referensi file spesifikasi. Untuk melihat konfigurasi tindakan dengan file spesifikasi penerapan yang ditentukan, lihat contoh diDeklarasi tindakan dengan contoh spesifikasi Deploy.

MaxBatch

Wajib: Tidak

Jumlah maksimum instance yang diizinkan untuk digunakan secara paralel.

MaxError

Wajib: Tidak

Jumlah maksimum kesalahan instans yang diizinkan selama penerapan.

TargetGroupNameList

Wajib: Tidak

Daftar nama kelompok target untuk penerapan. Anda harus sudah membuat kelompok sasaran.

Kelompok target menyediakan satu set instance untuk memproses permintaan tertentu. Jika grup target ditentukan, instance akan dihapus dari grup target sebelum penerapan dan ditambahkan kembali ke grup target setelah penerapan.

PreScript

Wajib: Tidak

Skrip yang akan dijalankan sebelum fase aksi Deploy.

PostScript

Wajib: Ya

Skrip yang akan dijalankan setelah fase tindakan Deploy.

Gambar berikut menunjukkan contoh halaman Edit untuk tindakan di mana Gunakan konfigurasi tindakan dipilih.

Halaman Edit tindakan untuk pipeline baru dengan tindakan EC2Deploy yang menentukan menggunakan konfigurasi tindakan

Gambar berikut menunjukkan contoh halaman E dit untuk tindakan di mana Gunakan DeploySpec file dipilih.

Halaman Edit tindakan untuk pipeline baru dengan opsi tindakan EC2Deploy untuk menggunakan file spesifikasi

Artefak masukan

  • Jumlah artefak: 1

  • Deskripsi: File yang disediakan, jika ada, untuk mendukung tindakan skrip selama penerapan.

Artefak keluaran

  • Jumlah artefak: 0

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

Izin kebijakan peran layanan untuk tindakan penerapan EC2

Saat CodePipeline menjalankan tindakan, peran CodePipeline layanan memerlukan izin berikut, dengan cakupan yang tepat untuk akses dengan hak istimewa paling sedikit.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "StatementWithAllResource", "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "elasticloadbalancing:DescribeTargetGroupAttributes", "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeTargetHealth", "ssm:CancelCommand", "ssm:DescribeInstanceInformation", "ssm:ListCommandInvocations" ], "Resource": [ "*" ] }, { "Sid": "StatementForLogs", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-east-1:111122223333:log-group:/aws/codepipeline/{{pipelineName}}:*" ] }, { "Sid": "StatementForElasticloadbalancing", "Effect": "Allow", "Action": [ "elasticloadbalancing:DeregisterTargets", "elasticloadbalancing:RegisterTargets" ], "Resource": [ "arn:aws:elasticloadbalancing:us-east-1:111122223333:targetgroup/[[targetGroupName]]/*" ] }, { "Sid": "StatementForSsmOnTaggedInstances", "Effect": "Allow", "Action": [ "ssm:SendCommand" ], "Resource": [ "arn:aws:ec2:us-east-1:111122223333:instance/*" ], "Condition": { "StringEquals": { "aws:ResourceTag/{{tagKey}}": "{{tagValue}}" } } }, { "Sid": "StatementForSsmApprovedDocuments", "Effect": "Allow", "Action": [ "ssm:SendCommand" ], "Resource": [ "arn:aws:ssm:us-east-1::document/AWS-RunPowerShellScript", "arn:aws:ssm:us-east-1::document/AWS-RunShellScript" ] } ] }

Grup log untuk pipeline Anda di CloudWatch log

Saat CodePipeline menjalankan tindakan CodePipeline , membuat grup log menggunakan nama pipeline sebagai berikut. Ini memungkinkan Anda untuk mengurangi izin untuk mencatat sumber daya menggunakan nama pipeline.

/aws/codepipeline/MyPipelineName

Izin berikut untuk logging disertakan dalam pembaruan di atas untuk peran layanan.

  • log: CreateLogGroup

  • log: CreateLogStream

  • log: PutLogEvents

Untuk melihat log di konsol menggunakan halaman dialog detail tindakan, izin untuk melihat log harus ditambahkan ke peran konsol. Untuk informasi selengkapnya, lihat contoh kebijakan izin konsol diIzin diperlukan untuk melihat log komputasi di konsol.

Izin kebijakan peran layanan untuk CloudWatch log

Saat CodePipeline menjalankan tindakan CodePipeline , membuat grup log menggunakan nama pipeline sebagai berikut. Ini memungkinkan Anda untuk mengurangi izin untuk mencatat sumber daya menggunakan nama pipeline.

/aws/codepipeline/MyPipelineName

Untuk melihat log di konsol menggunakan halaman dialog detail tindakan, izin untuk melihat log harus ditambahkan ke peran konsol. Untuk informasi selengkapnya, lihat contoh kebijakan izin konsol diIzin diperlukan untuk melihat log komputasi di konsol.

Terapkan referensi file spesifikasi

Saat CodePipeline menjalankan tindakan, Anda dapat menentukan file spesifikasi untuk mengonfigurasi penerapan ke instans Anda. File spesifikasi penerapan menentukan apa yang harus diinstal dan kait peristiwa siklus hidup mana yang akan dijalankan sebagai respons terhadap peristiwa siklus hidup penerapan. File spesifikasi penerapan selalu YAML-formatted. File spesifikasi penerapan digunakan untuk:

  • Petakan file sumber dalam revisi aplikasi Anda ke tujuannya pada instance.

  • Tentukan izin khusus untuk file yang digunakan.

  • Tentukan skrip yang akan dijalankan pada setiap instance pada berbagai tahap proses penerapan.

File spesifikasi penerapan mendukung parameter konfigurasi penerapan tertentu yang didukung oleh CodeDeploy AppSpec file tersebut. Anda dapat menggunakan AppSpec file yang ada secara langsung, dan parameter yang tidak didukung akan diabaikan. Untuk informasi selengkapnya tentang AppSpec file di CodeDeploy, lihat referensi file Spesifikasi Aplikasi di Panduan CodeDeploy Pengguna.

Parameter penerapan file ditentukan sebagai berikut.

  • files- File spesifikasi penerapan menunjuk source: dan destination: untuk file penerapan.

  • scripts- Acara skrip untuk penyebaran. Dua acara didukung: BeforeDeploy danAfterDeploy.

  • hooks- Pengait siklus hidup untuk acara tersebut. Pengait berikut didukung:ApplicationStop,BeforeInstall,AfterInstall,ApplicationStart, danValidateService.

    catatan

    Parameter hook tersedia untuk AppSpec kompatibilitas dengan CodeDeploy dan hanya tersedia dalam versi 0.0 (AppSpec format). Untuk format ini, CodePipeline akan melakukan pemetaan upaya terbaik dari acara.

Spasi YAML yang benar harus digunakan dalam file spesifikasi; jika tidak, kesalahan akan muncul jika lokasi dan jumlah spasi dalam file spesifikasi penerapan tidak benar. Untuk informasi selengkapnya tentang spasi, lihat spesifikasi YAML.

Contoh file spesifikasi penerapan ada di bawah ini.

version: 0.1 files: - source: /index.html destination: /var/www/html/ scripts: BeforeDeploy: - location: scripts/install_dependencies timeout: 300 runas: myuser AfterDeploy: - location: scripts/start_server timeout: 300 runas: myuser

Untuk melihat konfigurasi tindakan dengan file spesifikasi penerapan yang ditentukan, lihat contoh diDeklarasi tindakan dengan contoh spesifikasi Deploy.

Deklarasi tindakan

YAML
name: DeployEC2 actions: - name: EC2 actionTypeId: category: Deploy owner: AWS provider: EC2 version: '1' runOrder: 1 configuration: InstanceTagKey: Name InstanceTagValue: my-instances InstanceType: EC2 PostScript: "test/script.sh", TargetDirectory: "/home/ec2-user/deploy" outputArtifacts: [] inputArtifacts: - name: SourceArtifact region: us-east-1
JSON
{ "name": "DeployEC2", "actions": [ { "name": "EC2Deploy", "actionTypeId": { "category": "Deploy", "owner": "AWS", "provider": "EC2", "version": "1" }, "runOrder": 1, "configuration": { "InstanceTagKey": "Name", "InstanceTagValue": "my-instances", "InstanceType": "EC2", "PostScript": "test/script.sh", "TargetDirectory": "/home/ec2-user/deploy" }, "outputArtifacts": [], "inputArtifacts": [ { "name": "SourceArtifact" } ], "region": "us-east-1" } ] },

Deklarasi tindakan dengan contoh spesifikasi Deploy

YAML
name: DeployEC2 actions: - name: EC2 actionTypeId: category: Deploy owner: AWS provider: EC2 version: '1' runOrder: 1 configuration: DeploySpec: "deployspec.yaml" InstanceTagKey: Name InstanceTagValue: my-instances InstanceType: EC2 outputArtifacts: [] inputArtifacts: - name: SourceArtifact region: us-east-1
JSON
{ "name": "DeployEC2", "actions": [ { "name": "EC2Deploy", "actionTypeId": { "category": "Deploy", "owner": "AWS", "provider": "EC2", "version": "1" }, "runOrder": 1, "configuration": { "DeploySpec": "deployspec.yaml", "InstanceTagKey": "Name", "InstanceTagValue": "my-instances", "InstanceType": "EC2" }, "outputArtifacts": [], "inputArtifacts": [ { "name": "SourceArtifact" } ], "region": "us-east-1" } ] },

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