

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

# Referensi tindakan Amazon EC2
<a name="action-reference-EC2Deploy"></a>

Anda menggunakan `EC2` tindakan Amazon EC2 untuk menyebarkan kode aplikasi ke armada penerapan Anda. Armada penyebaran Anda dapat terdiri dari instans Amazon EC2 Linux atau node yang dikelola Linux SSM. Instans Anda harus memiliki agen SSM yang diinstal.

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

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

**catatan**  
Tindakan ini hanya didukung untuk pipeline tipe V2.

**Topics**
+ [

## Tipe tindakan
](#action-reference-EC2Deploy-type)
+ [

## Parameter konfigurasi
](#action-reference-EC2Deploy-parameters)
+ [

## Artefak masukan
](#action-reference-EC2Deploy-input)
+ [

## Artefak keluaran
](#action-reference-EC2Deploy-output)
+ [

## Izin kebijakan peran layanan untuk tindakan penerapan EC2
](#action-reference-EC2Deploy-permissions-action)
+ [

## Menyebarkan referensi file spesifikasi
](#action-reference-EC2Deploy-spec-reference)
+ [

## Deklarasi tindakan
](#action-reference-EC2Deploy-example)
+ [

## Deklarasi tindakan dengan contoh spesifikasi Deploy
](#action-reference-EC2Deploy-example-spec)
+ [

## Lihat juga
](#action-reference-EC2Deploy-links)

## Tipe tindakan
<a name="action-reference-EC2Deploy-type"></a>
+ Kategori: `Deploy`
+ Pemilik: `AWS`
+ Penyedia: `EC2`
+ Versi: `1`

## Parameter konfigurasi
<a name="action-reference-EC2Deploy-parameters"></a>

**InstanceTagKey**  
Wajib: Ya  
Kunci tag dari instans yang Anda buat di Amazon EC2, seperti. `Name`

**InstanceTagValue**  
Wajib: Tidak  
Nilai tag instans yang Anda buat di Amazon EC2, seperti. `my-instances`  
Ketika nilai ini tidak ditentukan, semua instance dengan **InstanceTagKey**akan dicocokkan.

**InstanceType**  
Wajib: Ya  
Jenis instance atau node SSM yang dibuat di Amazon EC2. Nilai yang valid adalah `EC2` dan `SSM_MANAGED_NODE`.  
Anda harus sudah membuat, menandai, dan menginstal agen SSM pada semua instance.  
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 artefak CodePipeline . Buat peran default atau perbarui peran yang ada dengan `s3:GetObject` izin yang tercakup 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 menyebarkan deskripsi dan informasi bidang spesifikasi, lihat. [Menyebarkan referensi file spesifikasi](#action-reference-EC2Deploy-spec-reference) Untuk melihat konfigurasi tindakan dengan file spesifikasi deploy yang ditentukan, lihat contoh di. [Deklarasi tindakan dengan contoh spesifikasi Deploy](#action-reference-EC2Deploy-example-spec)

**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 grup target untuk penyebaran. Anda harus sudah membuat grup target.  
Grup sasaran menyediakan serangkaian 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  
Script yang akan dijalankan sebelum fase aksi Deploy.

**PostScript**  
Wajib: Ya  
Script yang akan dijalankan setelah fase aksi Deploy.

Gambar berikut menunjukkan contoh halaman **Edit** untuk tindakan di mana **konfigurasi Use action** dipilih.

![\[Halaman Edit tindakan untuk pipeline baru dengan tindakan EC2 Deploy yang menentukan menggunakan konfigurasi tindakan\]](http://docs.aws.amazon.com/id_id/codepipeline/latest/userguide/images/ec2deploy-action.png)


Gambar berikut menunjukkan contoh halaman **Edit** untuk tindakan di mana **Gunakan DeploySpec file** dipilih.

![\[Halaman Edit tindakan untuk pipeline baru dengan opsi tindakan EC2 Deploy untuk menggunakan file spesifikasi\]](http://docs.aws.amazon.com/id_id/codepipeline/latest/userguide/images/ec2deploy-action-spec.png)


## Artefak masukan
<a name="action-reference-EC2Deploy-input"></a>
+ **Jumlah artefak:** `1`
+ **Deskripsi:** File yang disediakan, jika ada, untuk mendukung tindakan skrip selama penyebaran.

## Artefak keluaran
<a name="action-reference-EC2Deploy-output"></a>
+ **Jumlah artefak:** `0` 
+ **Deskripsi:** Artefak keluaran tidak berlaku untuk jenis tindakan ini.

## Izin kebijakan peran layanan untuk tindakan penerapan EC2
<a name="action-reference-EC2Deploy-permissions-action"></a>

Saat CodePipeline menjalankan tindakan, peran CodePipeline layanan memerlukan izin berikut, yang dicakup dengan 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
<a name="action-reference-EC2Deploy-logs"></a>

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

```
/aws/codepipeline/MyPipelineName
```

Izin pencatatan berikut 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 di[Izin diperlukan untuk melihat log komputasi di konsol CodePipeline](security-iam-permissions-console-logs.md).

### Izin kebijakan peran layanan untuk log CloudWatch
<a name="w2aac55c13c21c11"></a>

Saat CodePipeline menjalankan tindakan, CodePipeline buat 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 di[Izin diperlukan untuk melihat log komputasi di konsol CodePipeline](security-iam-permissions-console-logs.md).

## Menyebarkan referensi file spesifikasi
<a name="action-reference-EC2Deploy-spec-reference"></a>

Saat CodePipeline menjalankan tindakan, Anda dapat menentukan file spesifikasi untuk mengonfigurasi penerapan ke instance 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 diformat YAML. File spesifikasi deploy digunakan untuk:
+ Petakan file sumber dalam revisi aplikasi Anda ke tujuan mereka pada instance.
+ Tentukan izin khusus untuk file yang digunakan.
+ Tentukan skrip yang akan dijalankan pada setiap instance pada berbagai tahap proses penyebaran.

File spesifikasi deploy mendukung parameter konfigurasi penerapan tertentu yang didukung oleh CodeDeploy file. AppSpec Anda dapat menggunakan AppSpec file yang ada secara langsung, dan parameter apa pun yang tidak didukung akan diabaikan. Untuk informasi selengkapnya tentang AppSpec file dalam CodeDeploy, lihat referensi file Spesifikasi Aplikasi di *Panduan [CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html)Pengguna*.

Parameter penyebaran file ditentukan sebagai berikut. 
+ `files`- File spesifikasi deploy menunjuk `source:` dan `destination:` untuk file penyebaran. 
+ `scripts`- Acara skrip untuk penyebaran. Dua acara didukung: `BeforeDeploy` dan`AfterDeploy`.
+ `hooks`- Siklus hidup terkait untuk acara tersebut. Kait berikut didukung:`ApplicationStop`,,`BeforeInstall`, `AfterInstall``ApplicationStart`, dan`ValidateService`.
**catatan**  
Parameter kait tersedia untuk AppSpec kompatibilitas dengan CodeDeploy dan hanya tersedia dalam versi 0.0 (AppSpec format). Untuk format ini, CodePipeline akan melakukan upaya terbaik pemetaan acara.

Spasi YAMAL 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 [YAMM.](http://www.yaml.org/)

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 deploy yang ditentukan, lihat contoh di. [Deklarasi tindakan dengan contoh spesifikasi Deploy](#action-reference-EC2Deploy-example-spec)

## Deklarasi tindakan
<a name="action-reference-EC2Deploy-example"></a>

------
#### [ 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
<a name="action-reference-EC2Deploy-example-spec"></a>

------
#### [ 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"
        }
    ]
},
```

------

## Lihat juga
<a name="action-reference-EC2Deploy-links"></a>

Sumber daya terkait berikut dapat membantu Anda saat Anda bekerja dengan tindakan ini.
+  [Tutorial: Terapkan ke instans Amazon EC2 dengan CodePipeline](tutorials-ec2-deploy.md)— Tutorial ini memandu Anda melalui pembuatan instance EC2 di mana Anda akan menyebarkan file skrip, bersama dengan pembuatan pipeline menggunakan tindakan EC2.
+ [Tindakan Penerapan EC2 gagal dengan pesan kesalahan `No such file`](troubleshooting.md#troubleshooting-ec2-deploy)— Topik ini menjelaskan pemecahan masalah untuk kesalahan file tidak ditemukan dengan tindakan EC2.