

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

# CloudFormation menyebarkan referensi tindakan
<a name="action-reference-CloudFormation"></a>

Mengeksekusi operasi pada CloudFormation tumpukan. Tumpukan adalah kumpulan sumber AWS daya yang dapat Anda kelola sebagai satu unit. Sumber daya dalam tumpukan ditentukan oleh CloudFormation template tumpukan. Set perubahan membuat perbandingan yang dapat dilihat tanpa mengubah tumpukan asli. Untuk informasi tentang jenis CloudFormation tindakan yang dapat dilakukan pada tumpukan dan set perubahan, lihat `ActionMode` parameter.

Untuk membuat pesan kesalahan untuk CloudFormation tindakan di mana operasi tumpukan gagal, CodePipeline panggil CloudFormation `DescribeStackEvents` API. Jika peran IAM tindakan memiliki izin untuk mengakses API tersebut, detail tentang sumber daya pertama yang gagal akan disertakan dalam pesan CodePipeline kesalahan. Jika tidak, jika kebijakan peran tidak memiliki izin yang sesuai, CodePipeline akan mengabaikan mengakses API dan menampilkan pesan kesalahan umum sebagai gantinya. Untuk melakukan ini, `cloudformation:DescribeStackEvents` izin harus ditambahkan ke peran layanan atau peran IAM lainnya untuk pipeline.

Jika Anda tidak ingin detail sumber daya muncul dalam pesan kesalahan pipeline, Anda dapat mencabut izin ini untuk peran IAM tindakan dengan menghapus izin. `cloudformation:DescribeStackEvents`

**Topics**
+ [Tipe tindakan](#action-reference-CloudFormation-type)
+ [Parameter konfigurasi](#action-reference-CloudFormation-config)
+ [Artefak masukan](#action-reference-CloudFormation-input)
+ [Artefak keluaran](#action-reference-CloudFormation-output)
+ [Variabel keluaran](#action-reference-CloudFormation-variables)
+ [Izin peran layanan: tindakan CloudFormation](#edit-role-cloudformation)
+ [Deklarasi tindakan](#action-reference-CloudFormation-example)
+ [Lihat juga](#action-reference-CloudFormation-links)

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

## Parameter konfigurasi
<a name="action-reference-CloudFormation-config"></a>

**ActionMode**  
Wajib: Ya  
`ActionMode`adalah nama tindakan yang CloudFormation dilakukan pada tumpukan atau set perubahan. Mode aksi berikut tersedia:  
+ `CHANGE_SET_EXECUTE`mengeksekusi set perubahan untuk tumpukan sumber daya yang didasarkan pada serangkaian pembaruan sumber daya yang ditentukan. Dengan tindakan ini, CloudFormation mulai mengubah tumpukan.
+ `CHANGE_SET_REPLACE` membuat set perubahan, jika tidak ada, berdasarkan nama tumpukan dan templat yang Anda kirimkan. Jika set perubahan ada, CloudFormation menghapusnya, dan kemudian membuat yang baru. 
+ `CREATE_UPDATE`membuat tumpukan jika tidak ada. Jika tumpukan ada, CloudFormation perbarui tumpukan. Gunakan tindakan ini untuk memperbarui tumpukan yang ada. Tidak seperti`REPLACE_ON_FAILURE`, jika tumpukan ada dan dalam keadaan gagal, CodePipeline tidak akan menghapus dan mengganti tumpukan.
+ `DELETE_ONLY` akan menghapus tumpukan. Jika Anda menentukan tumpukan yang tidak ada, tindakan berhasil diselesaikan tanpa menghapus tumpukan.
+ `REPLACE_ON_FAILURE`membuat tumpukan, jika tidak ada. Jika tumpukan ada dan dalam keadaan gagal, CloudFormation hapus tumpukan, lalu buat tumpukan baru. Jika tumpukan tidak dalam keadaan gagal, CloudFormation perbarui. 

  Tumpukan dalam keadaan gagal ketika salah satu jenis status berikut ditampilkan di CloudFormation: 
  + `ROLLBACK_FAILED`
  + `CREATE_FAILED`
  + `DELETE_FAILED`
  + `UPDATE_ROLLBACK_FAILED`

  Gunakan tindakan ini untuk secara otomatis mengganti tumpukan yang gagal tanpa memulihkan atau memecahkan masalahnya.
**penting**  
Kami menyarankan Anda menggunakan `REPLACE_ON_FAILURE` untuk tujuan pengujian hanya karena mungkin menghapus tumpukan Anda.

**StackName**  
Wajib: Ya  
`StackName`adalah nama tumpukan yang ada atau tumpukan yang ingin Anda buat.

**Kemampuan**  
Diperlukan: Kondisional  
Penggunaan `Capabilities` mengakui bahwa template mungkin memiliki kemampuan untuk membuat dan memperbarui beberapa sumber daya sendiri, dan bahwa kemampuan ini ditentukan berdasarkan jenis sumber daya dalam template.  
Properti ini diperlukan jika Anda memiliki sumber daya IAM di template tumpukan Anda atau Anda membuat tumpukan langsung dari template yang berisi makro. Agar CloudFormation tindakan berhasil beroperasi dengan cara ini, Anda harus secara eksplisit mengakui bahwa Anda ingin melakukannya dengan salah satu kemampuan berikut:  
+ `CAPABILITY_IAM` 
+ `CAPABILITY_NAMED_IAM` 
+ `CAPABILITY_AUTO_EXPAND` 
 Anda dapat menentukan lebih dari satu kemampuan dengan menggunakan koma (tanpa spasi) di antara kemampuan. Contoh di [Deklarasi tindakan](#action-reference-CloudFormation-example) menunjukkan entri dengan properti CAPABILITY\$1IAM dan CAPABILITY\$1AUTO\$1EXPAND.  
Untuk informasi selengkapnya`Capabilities`, lihat properti [UpdateStack](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStack.html)di bawah *Referensi AWS CloudFormation API*.

**ChangeSetName**  
Diperlukan: Kondisional  
`ChangeSetName`adalah nama set perubahan yang ada atau set perubahan baru yang ingin Anda buat untuk tumpukan yang ditentukan.  
 Properti ini diperlukan untuk mode tindakan berikut: CHANGE\$1SET\$1REPLACE dan CHANGE\$1SET\$1EXECUTE. Untuk semua mode tindakan lainnya, properti ini diabaikan.

**RoleArn**  
Diperlukan: Kondisional  
`RoleArn`Ini adalah ARN dari peran layanan IAM yang CloudFormation mengasumsikan ketika beroperasi pada sumber daya di tumpukan yang ditentukan. `RoleArn`tidak diterapkan saat menjalankan set perubahan. Jika Anda tidak menggunakan CodePipeline untuk membuat set perubahan, pastikan bahwa set perubahan atau tumpukan memiliki peran terkait.  
Peran ini harus dalam akun yang sama dengan peran untuk tindakan yang sedang berjalan, seperti yang dikonfigurasi dalam deklarasi tindakan`RoleArn`.
Properti ini diperlukan untuk mode tindakan berikut:  
+ CREATE\$1UPDATE
+ REPLACE\$1ON\$1FAILURE
+ DELETE\$1ONLY
+ CHANGE\$1SET\$1REPLACE
CloudFormation diberikan URL bertanda S3 ke template; oleh karena itu, ini `RoleArn` tidak memerlukan izin untuk mengakses bucket artefak. Namun, tindakan tersebut `RoleArn` *memang* memerlukan izin untuk mengakses bucket artefak, untuk menghasilkan URL yang ditandatangani.

**TemplatePath**  
Diperlukan: Kondisional  
`TemplatePath`mewakili file CloudFormation template. Anda menyertakan file dalam artefak input untuk tindakan ini. Nama file mengikuti format ini:  
`Artifactname::TemplateFileName`  
`Artifactname` adalah nama artefak input seperti yang muncul di CodePipeline. Sebagai contoh, tahap sumber dengan nama artefak `SourceArtifact` dan nama file `template-export.json` membuat nama `TemplatePath` seperti yang ditunjukkan dalam contoh ini:  

```
"TemplatePath": "SourceArtifact::template-export.json"
```
Properti ini diperlukan untuk mode tindakan berikut:   
+ CREATE\$1UPDATE
+ REPLACE\$1ON\$1FAILURE
+ CHANGE\$1SET\$1REPLACE
Untuk semua mode tindakan lainnya, properti ini diabaikan.  
File CloudFormation template yang berisi badan template memiliki panjang minimal 1 byte dan panjang maksimum 1 MB. Untuk tindakan CloudFormation penerapan di CodePipeline, ukuran artefak input maksimum selalu 256 MB. Untuk informasi selengkapnya, lihat [Kuota di AWS CodePipeline](limits.md) dan [CloudFormation Batas](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-limits.html).

**OutputFileName**  
Wajib: Tidak  
Gunakan `OutputFileName` untuk menentukan nama file keluaran, seperti`CreateStackOutput.json`, yang CodePipeline menambah artefak keluaran pipeline untuk tindakan ini. File JSON berisi isi `Outputs` bagian dari CloudFormation tumpukan.  
Jika Anda tidak menentukan nama, CodePipeline tidak menghasilkan file keluaran atau artefak.

**ParameterOverrides**  
Wajib: Tidak  
Parameter didefinisikan dalam template tumpukan Anda dan memungkinkan Anda untuk memberikan nilai untuk mereka pada saat pembuatan tumpukan atau pembaruan. Anda dapat menggunakan objek JSON untuk mengatur nilai parameter dalam template Anda. (Nilai-nilai ini mengesampingkan yang ditetapkan dalam file konfigurasi template.) Untuk informasi selengkapnya tentang penggunaan penggantian parameter, lihat [Properti Konfigurasi (Objek JSON](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-action-reference.html#w4363ab1c13c13b9)).  
Kami menyarankan Anda menggunakan file konfigurasi template untuk sebagian besar nilai parameter Anda. Gunakan penggantian parameter hanya untuk nilai yang tidak diketahui sampai pipeline berjalan. Untuk informasi selengkapnya, lihat [Menggunakan Fungsi Ganti Parameter dengan CodePipeline Pipelines](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-parameter-override-functions.html) di *AWS CloudFormation Panduan Pengguna*.  
Semua nama parameter harus ada dalam templat tumpukan.

**TemplateConfiguration**  
Wajib: Tidak  
`TemplateConfiguration` adalah file konfigurasi templat. Anda menyertakan file dalam artefak input untuk tindakan ini. Ini dapat berisi nilai parameter template dan kebijakan tumpukan. Untuk informasi selengkapnya tentang format file konfigurasi templat, lihat [AWS CloudFormation Artefak](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-cfn-artifacts.html).   
Nama file konfigurasi template mengikuti format ini:   
`Artifactname::TemplateConfigurationFileName`  
`Artifactname` adalah nama artefak input seperti yang muncul di CodePipeline. Sebagai contoh, tahap sumber dengan nama artefak `SourceArtifact` dan nama file `test-configuration.json` membuat nama `TemplateConfiguration` seperti yang ditunjukkan dalam contoh ini:  

```
"TemplateConfiguration": "SourceArtifact::test-configuration.json"
```

## Artefak masukan
<a name="action-reference-CloudFormation-input"></a>
+ **Jumlah artefak:** `0 to 10`
+ **Deskripsi:** Sebagai masukan, CloudFormation tindakan secara opsional menerima artefak untuk tujuan ini:
  + Untuk menyediakan file template stack untuk dieksekusi. (Lihat `TemplatePath` parameternya.)
  + Untuk menyediakan file konfigurasi template yang akan digunakan. (Lihat `TemplateConfiguration` parameternya.) Untuk informasi selengkapnya tentang format file konfigurasi templat, lihat [AWS CloudFormation Artefak](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-cfn-artifacts.html). 
  + Untuk menyediakan artefak untuk fungsi Lambda yang akan digunakan sebagai bagian dari tumpukan. CloudFormation 

## Artefak keluaran
<a name="action-reference-CloudFormation-output"></a>
+ **Jumlah artefak:** `0 to 1` 
+ **Deskripsi:** Jika `OutputFileName` parameter ditentukan, ada artefak keluaran yang dihasilkan oleh tindakan ini yang berisi file JSON dengan nama yang ditentukan. File JSON berisi isi bagian Output dari tumpukan. CloudFormation 

  Untuk informasi selengkapnya tentang bagian output yang dapat Anda buat untuk CloudFormation tindakan Anda, lihat [Keluaran](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html).

## Variabel keluaran
<a name="action-reference-CloudFormation-variables"></a>

Ketika dikonfigurasi, tindakan ini menghasilkan variabel yang dapat direferensikan oleh konfigurasi tindakan tindakan hilir dalam pipeline. Anda mengonfigurasi tindakan dengan namespace untuk membuat variabel-variabel tersebut tersedia untuk konfigurasi tindakan hilir.

Untuk CloudFormation tindakan, variabel dihasilkan dari nilai apa pun yang ditunjuk di `Outputs` bagian template tumpukan. Perhatikan bahwa satu-satunya mode CloudFormation tindakan yang menghasilkan output adalah mode yang menghasilkan atau memperbarui tumpukan, seperti pembuatan tumpukan, pembaruan tumpukan, dan eksekusi set perubahan. Mode tindakan terkait yang menghasilkan variabel adalah:
+ `CHANGE_SET_EXECUTE`
+ `CHANGE_SET_REPLACE`
+ `CREATE_UPDATE`
+ `REPLACE_ON_FAILURE`

Untuk informasi selengkapnya, lihat [Referensi variabel](reference-variables.md). Untuk tutorial yang menunjukkan cara membuat pipeline dengan tindakan CloudFormation penerapan dalam pipeline yang menggunakan variabel CloudFormation keluaran, lihat[Tutorial: Buat pipeline yang menggunakan variabel dari AWS CloudFormation tindakan penerapan](tutorials-cloudformation-action.md).

## Izin peran layanan: tindakan CloudFormation
<a name="edit-role-cloudformation"></a>

Saat CodePipeline menjalankan tindakan, kebijakan peran CodePipeline layanan memerlukan izin berikut, yang dicakup dengan tepat ke ARN sumber daya pipeline untuk mempertahankan akses dengan hak istimewa paling sedikit. Misalnya, tambahkan yang berikut ini ke pernyataan kebijakan Anda:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCFNStackAccess",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateStack",
                "cloudformation:UpdateStack",
                "cloudformation:DeleteStack",
                "cloudformation:DescribeStacks",
                "cloudformation:DescribeStackResources",
                "cloudformation:DescribeStackEvents",
                "cloudformation:GetTemplate",
                "cloudformation:DescribeChangeSet",
                "cloudformation:CreateChangeSet",
                "cloudformation:DeleteChangeSet",
                "cloudformation:ExecuteChangeSet"
            ],
            "Resource": [
                "arn:aws:cloudformation:*:111122223333:stack/[[cfnDeployStackNames]]/*"
            ]
        },
        {
            "Sid": "ValidateTemplate",
            "Effect": "Allow",
            "Action": [
                "cloudformation:ValidateTemplate"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowIAMPassRole",
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::111122223333:role/[[cfnExecutionRoles]]"
            ],
            "Condition": {
                "StringEqualsIfExists": {
                    "iam:PassedToService": [
                        "cloudformation.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

Perhatikan bahwa `cloudformation:DescribeStackEvents` izin adalah opsional. Hal ini memungkinkan CloudFormation tindakan untuk menampilkan pesan kesalahan yang lebih rinci. Izin ini dapat dicabut dari peran IAM jika Anda tidak ingin detail sumber daya muncul dalam pesan kesalahan pipeline.

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

------
#### [ YAML ]

```
Name: ExecuteChangeSet
ActionTypeId:
  Category: Deploy
  Owner: AWS
  Provider: CloudFormation
  Version: '1'
RunOrder: 2
Configuration:
  ActionMode: CHANGE_SET_EXECUTE
  Capabilities: CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND
  ChangeSetName: pipeline-changeset
  ParameterOverrides: '{"ProjectId": "my-project","CodeDeployRole": "CodeDeploy_Role_ARN"}'
  RoleArn: CloudFormation_Role_ARN
  StackName: my-project--lambda
  TemplateConfiguration: 'my-project--BuildArtifact::template-configuration.json'
  TemplatePath: 'my-project--BuildArtifact::template-export.yml'
OutputArtifacts: []
InputArtifacts:
  - Name: my-project-BuildArtifact
```

------
#### [ JSON ]

```
{
    "Name": "ExecuteChangeSet",
    "ActionTypeId": {
        "Category": "Deploy",
        "Owner": "AWS",
        "Provider": "CloudFormation",
        "Version": "1"
    },
    "RunOrder": 2,
    "Configuration": {
        "ActionMode": "CHANGE_SET_EXECUTE",
        "Capabilities": "CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND",
        "ChangeSetName": "pipeline-changeset",
        "ParameterOverrides": "{\"ProjectId\": \"my-project\",\"CodeDeployRole\": \"CodeDeploy_Role_ARN\"}",
        "RoleArn": "CloudFormation_Role_ARN",
        "StackName": "my-project--lambda",
        "TemplateConfiguration": "my-project--BuildArtifact::template-configuration.json",
        "TemplatePath": "my-project--BuildArtifact::template-export.yml"
    },
    "OutputArtifacts": [],
    "InputArtifacts": [
        {
             "Name": "my-project-BuildArtifact"
        }
    ]
},
```

------

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

Sumber daya terkait berikut dapat membantu Anda saat Anda bekerja dengan tindakan ini.
+ [Referensi Properti Konfigurasi](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-action-reference.html) - Bab referensi ini dalam *Panduan AWS CloudFormation Pengguna* memberikan lebih banyak deskripsi dan contoh untuk CodePipeline parameter ini.
+ [AWS CloudFormation Referensi API](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/) — [CreateStack](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html)Parameter dalam *Referensi AWS CloudFormation API* menjelaskan parameter tumpukan untuk CloudFormation template.