

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

# CloudFormation permintaan sumber daya kustom dan referensi respons
<a name="crpg-ref"></a>

CloudFormation mengelola sumber daya kustom melalui protokol permintaan-respons yang berkomunikasi dengan penyedia sumber daya kustom Anda. Setiap permintaan menyertakan jenis permintaan (`Create`,`Update`, atau`Delete`) dan mengikuti alur kerja tingkat tinggi ini:

1. Pengembang template mendefinisikan sumber daya kustom dengan `ServiceToken` dan `ServiceTimeout` di template dan memulai operasi tumpukan.

1. CloudFormation mengirimkan permintaan JSON ke penyedia sumber daya khusus melalui SNS atau Lambda.

1. Penyedia sumber daya kustom memproses permintaan dan mengembalikan respons JSON ke URL bucket Amazon S3 yang telah ditetapkan sebelumnya sebelum periode batas waktu berakhir.

1. CloudFormation membaca respons dan melanjutkan dengan operasi tumpukan. Jika tidak ada respons yang diterima sebelum periode batas waktu berakhir, permintaan dianggap tidak berhasil, dan operasi tumpukan gagal.

Untuk informasi selengkapnya, lihat [Cara kerja sumber daya kustom](template-custom-resources.md#how-custom-resources-work).

Bagian ini menjelaskan struktur, parameter, dan respons yang diharapkan untuk setiap jenis permintaan.

**catatan**  
Ukuran total badan respons tidak dapat melebihi 4096 byte.

## Pengaturan templat
<a name="crpg-ref-template-setup"></a>

Saat mendefinisikan sumber daya kustom dalam templat, pengembang templat menggunakan [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudformation-customresource.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudformation-customresource.html)properti berikut:

`ServiceToken`  
Topik Amazon SNS ARN atau Lambda berfungsi ARN dari Wilayah yang sama dengan tumpukan.  
*Wajib*: Ya  
*Tipe*: String

`ServiceTimeout`  
Waktu maksimum, dalam hitungan detik, sebelum waktu operasi sumber daya kustom habis. Itu harus nilai antara 1 dan 3600. Default: 3600 detik (1 jam).  
*Wajib*: Tidak  
*Tipe*: String

Properti sumber daya tambahan didukung. Properti sumber daya akan dimasukkan seperti `ResourceProperties` dalam permintaan. Penyedia sumber daya khusus harus menentukan properti mana yang valid dan nilainya yang dapat diterima.

## Permintaan objek
<a name="crpg-ref-requesttypes"></a>

------
#### [ Create ]

Saat pengembang template membuat tumpukan yang berisi sumber daya khusus, CloudFormation kirimkan permintaan dengan `RequestType` set ke`Create`.

Buat permintaan berisi bidang berikut:

`RequestType`  
`Create`.  
*Wajib*: Ya  
*Tipe*: String

`RequestId`  
ID unik untuk permintaan tersebut.  
Menggabungkan `StackId` dengan `RequestId` formulir nilai yang dapat Anda gunakan untuk mengidentifikasi permintaan secara unik pada sumber daya khusus tertentu.  
*Wajib*: Ya  
*Tipe*: String

`StackId`  
Nama Sumber Daya Amazon (ARN) yang mengidentifikasi tumpukan yang berisi sumber daya khusus.  
Menggabungkan `StackId` dengan `RequestId` formulir nilai yang dapat Anda gunakan untuk mengidentifikasi permintaan secara unik pada sumber daya khusus tertentu.  
*Wajib*: Ya  
*Tipe*: String

`ResponseURL`  
URL respons mengidentifikasi bucket S3 yang telah ditetapkan sebelumnya yang menerima tanggapan dari penyedia sumber daya kustom ke. CloudFormation  
*Wajib*: Ya  
*Tipe*: String

`ResourceType`  
Jenis sumber daya yang dipilih developer templat dari sumber daya kustom di templat CloudFormation . Nama jenis sumber daya kustom dapat memiliki panjang hingga 60 karakter dan dapat mencakup alfanumerik dan karakter berikut: `_@-`.  
*Wajib*: Ya  
*Tipe*: String

`LogicalResourceId`  
Nama template yang dipilih pengembang (ID logis) dari sumber daya kustom dalam template. CloudFormation   
*Wajib*: Ya  
*Tipe*: String

`ResourceProperties`  
Bidang ini berisi isi `Properties` objek yang dikirim oleh pengembang template. Isinya ditentukan oleh penyedia sumber daya khusus.  
*Wajib*: Tidak  
*Jenis*: objek JSON

*Contoh*

```
{
   "RequestType" : "Create",
   "RequestId" : "unique-request-id",
   "StackId" : "arn:aws:cloudformation:us-west-2:123456789012:stack/mystack/id",
   "ResponseURL" : "pre-signed-url-for-create-response",
   "ResourceType" : "Custom::MyCustomResourceType",
   "LogicalResourceId" : "resource-logical-id",
   "ResourceProperties" : {
      "key1" : "string",
      "key2" : [ "list" ],
      "key3" : { "key4" : "map" }
   }
}
```

------
#### [ Update ]

Ketika pengembang template membuat perubahan pada properti sumber daya kustom dalam template dan memperbarui tumpukan, CloudFormation mengirimkan permintaan ke penyedia sumber daya kustom dengan `RequestType` set ke`Update`. Ini berarti bahwa kode sumber daya kustom Anda tidak harus mendeteksi perubahan sumber daya karena mengetahui bahwa propertinya telah berubah ketika jenis permintaan`Update`.

Permintaan Perbarui berisi bidang berikut:

`RequestType`  
`Update`.  
*Wajib*: Ya  
*Tipe*: String

`RequestId`  
ID unik untuk permintaan tersebut.  
Menggabungkan `StackId` dengan `RequestId` formulir nilai yang dapat Anda gunakan untuk mengidentifikasi permintaan secara unik pada sumber daya khusus tertentu.  
*Wajib*: Ya  
*Tipe*: String

`StackId`  
Nama Sumber Daya Amazon (ARN) yang mengidentifikasi tumpukan yang berisi sumber daya khusus.  
Menggabungkan `StackId` dengan `RequestId` formulir nilai yang dapat Anda gunakan untuk mengidentifikasi permintaan secara unik pada sumber daya khusus tertentu.  
*Wajib*: Ya  
*Tipe*: String

`ResponseURL`  
URL respons mengidentifikasi bucket S3 yang telah ditetapkan sebelumnya yang menerima tanggapan dari penyedia sumber daya kustom ke. CloudFormation  
*Wajib*: Ya  
*Tipe*: String

`ResourceType`  
Jenis sumber daya yang dipilih developer templat dari sumber daya kustom di templat CloudFormation . Nama jenis sumber daya kustom dapat memiliki panjang hingga 60 karakter dan dapat mencakup alfanumerik dan karakter berikut: `_@-`. Anda tidak dapat mengubah jenis selama pembaruan.  
*Wajib*: Ya  
*Tipe*: String

`LogicalResourceId`  
Nama template yang dipilih pengembang (ID logis) dari sumber daya kustom dalam template. CloudFormation   
*Wajib*: Ya  
*Tipe*: String

`PhysicalResourceId`  
ID fisik yang ditentukan penyedia sumber daya khusus yang unik untuk penyedia tersebut.  
*Wajib*: Ya  
*Tipe*: String

`ResourceProperties`  
Bidang ini berisi isi `Properties` objek yang dikirim oleh pengembang template. Isinya ditentukan oleh penyedia sumber daya khusus.  
*Wajib*: Tidak  
*Jenis*: objek JSON

`OldResourceProperties`  
Digunakan hanya untuk `Update` permintaan. Nilai properti sumber daya yang sebelumnya dideklarasikan oleh pengembang template dalam CloudFormation template.  
*Wajib*: Ya  
*Jenis*: objek JSON

*Contoh*

```
{
   "RequestType" : "Update",
   "RequestId" : "unique-request-id",
   "StackId" : "arn:aws:cloudformation:us-west-2:123456789012:stack/mystack/id",
   "ResponseURL" : "pre-signed-url-for-update-response",
   "ResourceType" : "Custom::MyCustomResourceType",
   "LogicalResourceId" : "resource-logical-id",
   "PhysicalResourceId" : "provider-defined-physical-id",
   "ResourceProperties" : {
      "key1" : "new-string",
      "key2" : [ "new-list" ],
      "key3" : { "key4" : "new-map" }
   },
   "OldResourceProperties" : {
      "key1" : "string",
      "key2" : [ "list" ],
      "key3" : { "key4" : "map" }
   }
}
```

------
#### [ Delete ]

Ketika pengembang template menghapus tumpukan atau menghapus sumber daya kustom dari template dan kemudian memperbarui tumpukan, CloudFormation mengirimkan permintaan dengan `RequestType` set ke`Delete`.

Hapus permintaan berisi bidang berikut:

`RequestType`  
`Delete`.  
*Wajib*: Ya  
*Tipe*: String

`RequestId`  
ID unik untuk permintaan tersebut.  
*Wajib*: Ya  
*Tipe*: String

`StackId`  
Nama Sumber Daya Amazon (ARN) yang mengidentifikasi tumpukan yang berisi sumber daya khusus.  
*Wajib*: Ya  
*Tipe*: String

`ResponseURL`  
URL respons mengidentifikasi bucket S3 yang telah ditetapkan sebelumnya yang menerima tanggapan dari penyedia sumber daya kustom ke. CloudFormation  
*Wajib*: Ya  
*Tipe*: String

`ResourceType`  
Jenis sumber daya yang dipilih developer templat dari sumber daya kustom di templat CloudFormation . Nama jenis sumber daya kustom dapat memiliki panjang hingga 60 karakter dan dapat mencakup alfanumerik dan karakter berikut: `_@-`.  
*Wajib*: Ya  
*Tipe*: String

`LogicalResourceId`  
Nama template yang dipilih pengembang (ID logis) dari sumber daya kustom dalam template. CloudFormation   
*Wajib*: Ya  
*Tipe*: String

`PhysicalResourceId`  
ID fisik yang ditentukan penyedia sumber daya khusus yang unik untuk penyedia tersebut.  
*Wajib*: Ya  
*Tipe*: String

`ResourceProperties`  
Bidang ini berisi isi `Properties` objek yang dikirim oleh pengembang template. Isinya ditentukan oleh penyedia sumber daya khusus.  
*Wajib*: Tidak  
*Jenis*: objek JSON

*Contoh*

```
{
   "RequestType" : "Delete",
   "RequestId" : "unique-request-id",
   "StackId" : "arn:aws:cloudformation:us-west-2:123456789012:stack/mystack/id",
   "ResponseURL" : "pre-signed-url-for-delete-response",
   "ResourceType" : "Custom::MyCustomResourceType",
   "LogicalResourceId" : "resource-logical-id",
   "PhysicalResourceId" : "provider-defined-physical-id",
   "ResourceProperties" : {
      "key1" : "string",
      "key2" : [ "list" ],
      "key3" : { "key4" : "map" }
   }
}
```

------

## Objek respons
<a name="crpg-ref-responses"></a>

Penyedia sumber daya kustom mengirimkan respons ke URL yang telah ditandatangani sebelumnya untuk semua jenis permintaan. Jika penyedia sumber daya kustom tidak mengirim respons, CloudFormation tunggu hingga waktu operasi habis.

Responsnya harus berupa objek JSON dengan bidang berikut:

`Status`  
Harus `SUCCESS` atau `FAILED`.  
*Wajib*: Ya  
*Tipe*: String

`RequestId`  
ID unik untuk permintaan tersebut. Salin nilai ini persis seperti yang muncul dalam permintaan.  
*Wajib*: Ya  
*Tipe*: String

`StackId`  
Nama Sumber Daya Amazon (ARN) yang mengidentifikasi tumpukan yang berisi sumber daya khusus. Salin nilai ini persis seperti yang muncul dalam permintaan.  
*Wajib*: Ya  
*Tipe*: String

`LogicalResourceId`  
Nama template yang dipilih pengembang (ID logis) dari sumber daya kustom dalam template. CloudFormation Salin nilai ini persis seperti yang muncul dalam permintaan.  
*Wajib*: Ya  
*Tipe*: String

`PhysicalResourceId`  
Nilai ini harus menjadi pengidentifikasi yang unik untuk vendor sumber daya khusus, dan dapat berukuran hingga 1 KB. Nilai harus berupa string yang tidak kosong dan harus identik untuk semua tanggapan untuk sumber daya yang sama.  
Saat memperbarui sumber daya kustom, nilai yang dikembalikan untuk `PhysicalResourceId` menentukan perilaku pembaruan. Jika nilainya tetap sama, CloudFormation anggap itu pembaruan normal. Jika nilai berubah, CloudFormation menafsirkan pembaruan sebagai pengganti dan mengirimkan permintaan hapus ke sumber daya lama. Untuk informasi selengkapnya, lihat [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudformation-customresource.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudformation-customresource.html).  
*Wajib*: Ya  
*Tipe*: String

`Reason`  
Menjelaskan alasan respons kegagalan.  
Diperlukan jika `Status` adalah `FAILED`. Sebaliknya, ini bersifat opsional.  
*Wajib*: Bersyarat  
*Tipe*: String

`NoEcho`  
Menunjukkan apakah akan menutupi output dari sumber daya kustom saat diambil dengan menggunakan `Fn::GetAtt` fungsi. Jika disetel ke`true`, semua nilai yang dikembalikan ditutupi dengan tanda bintang (\$1\$1\$1\$1\$1), *kecuali yang disimpan di bagian `Metadata` template*. CloudFormation tidak mengubah, memodifikasi, atau menyunting informasi apa pun yang Anda sertakan di `Metadata` bagian ini. Nilai default-nya adalah `false`.  
Untuk informasi selengkapnya tentang penggunaan `NoEcho` untuk menutupi informasi sensitif, lihat praktik [Jangan menanamkan kredensial dalam templat Anda](security-best-practices.md#creds) terbaik.  
Hanya tersedia untuk `Create` dan `Update` tanggapan. Tidak didukung untuk `Delete` tanggapan.  
*Wajib*: Tidak  
*Jenis:* Boolean

`Data`  
Pasangan nama-nilai yang ditentukan penyedia sumber daya khusus untuk dikirim dengan respons. Anda dapat mengakses nilai yang disediakan di sini dengan nama di template dengan`Fn::GetAtt`.  
Hanya tersedia untuk `Create` dan `Update` tanggapan. Tidak didukung untuk `Delete` tanggapan.  
Jika pasangan nama-nilai berisi informasi sensitif, Anda harus menggunakan `NoEcho` bidang untuk menutupi output dari sumber daya kustom. Jika tidak, nilai terlihat melalui APIs nilai properti permukaan (seperti`DescribeStackEvents`).
*Wajib*: Tidak  
*Jenis*: objek JSON

### Contoh Respon Sukses
<a name="crpg-ref-success-response-examples"></a>

#### `Create`dan `Update` Respon
<a name="crpg-ref-success-response-example-1"></a>

```
{
   "Status": "SUCCESS",
   "RequestId": "unique-request-id",
   "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/name/id",
   "LogicalResourceId": "resource-logical-id", 
   "PhysicalResourceId": "provider-defined-physical-id",
   "NoEcho": true,
   "Data": {
      "key1": "value1",
      "key2": "value2"
   }
}
```

#### `Delete` Respons
<a name="crpg-ref-success-response-example-2"></a>

```
{
   "Status": "SUCCESS",
   "RequestId": "unique-request-id",
   "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/name/id",
   "LogicalResourceId": "resource-logical-id", 
   "PhysicalResourceId": "provider-defined-physical-id"
}
```

### Contoh Respon Gagal
<a name="crpg-ref-failed-response-example"></a>

```
{
   "Status": "FAILED",
   "RequestId": "unique-request-id",
   "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/name/id",
   "LogicalResourceId": "resource-logical-id",
   "PhysicalResourceId": "provider-defined-physical-id",
   "Reason": "Required failure reason string"
}
```