Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Buat logika penyediaan khusus dengan sumber daya khusus
Sumber daya khusus menyediakan cara bagi Anda untuk menulis logika penyediaan khusus ke dalam CloudFormation templat Anda dan CloudFormation menjalankannya kapan saja Anda membuat, memperbarui (jika Anda mengubah sumber daya khusus), atau menghapus tumpukan. Ini dapat berguna ketika persyaratan penyediaan Anda melibatkan logika kompleks atau alur kerja yang tidak dapat diekspresikan dengan CloudFormation tipe sumber daya bawaan.
Misalnya, Anda mungkin ingin menyertakan sumber daya yang tidak tersedia sebagai tipe CloudFormation sumber daya. Anda dapat menyertakan sumber daya tersebut dengan menggunakan sumber daya kustom. Dengan begitu, Anda masih dapat mengelola semua sumber daya terkait Anda dalam satu tumpukan.
Untuk menentukan sumber daya kustom dalam CloudFormation template Anda, Anda menggunakan AWS::CloudFormation::CustomResource
atau jenis Custom::
sumber daya. Sumber daya khusus memerlukan satu properti, token layanan, yang menentukan ke mana permintaan CloudFormation dikirim, seperti SNS topik Amazon atau fungsi Lambda.MyCustomResourceTypeName
Topik berikut memberikan informasi tentang cara menggunakan sumber daya khusus.
Topik
catatan
CloudFormation Registri dan sumber daya khusus masing-masing menawarkan manfaatnya sendiri. Sumber daya khusus menawarkan manfaat berikut:
-
Anda tidak perlu mendaftarkan sumber daya.
-
Anda dapat menyertakan seluruh sumber daya sebagai bagian dari templat tanpa mendaftar.
-
Mendukung
Create
,Update
, danDelete
operasi
Keuntungan yang ditawarkan sumber daya berbasis registri meliputi:
-
Mendukung pemodelan, penyediaan, dan pengelolaan sumber daya aplikasi pihak ketiga
-
Mendukung operasi
Create
,Read
,Update
,Delete
, danList
(CRUDL
) -
Mendukung deteksi penyimpangan pada jenis sumber daya privat dan pihak ketiga
Tidak seperti sumber daya khusus, sumber daya berbasis registri tidak perlu mengaitkan SNS topik Amazon atau fungsi Lambda untuk melakukan CRUDL
operasi. Untuk informasi selengkapnya, lihat Mengelola ekstensi dengan CloudFormation registri.
Cara kerja sumber daya kustom
Proses umum untuk menyiapkan sumber daya kustom baru mencakup langkah-langkah berikut. Langkah-langkah ini melibatkan dua peran: penyedia sumber daya kustom yang memiliki sumber daya kustom dan pengembang template yang membuat template yang menyertakan jenis sumber daya kustom. Ini bisa menjadi orang yang sama, tetapi jika tidak, penyedia sumber daya khusus harus bekerja dengan pengembang template.
-
Penyedia sumber daya kustom menulis logika yang menentukan cara menangani permintaan dari CloudFormation dan melakukan tindakan pada sumber daya kustom.
-
Penyedia sumber daya khusus membuat SNS topik Amazon atau fungsi Lambda tempat CloudFormation dapat mengirim permintaan. SNSTopik Amazon atau fungsi Lambda harus berada di Wilayah yang sama tempat tumpukan akan dibuat.
-
Penyedia sumber daya khusus memberikan SNS topik Amazon ARN atau fungsi Lambda ARN ke pengembang template.
-
Pengembang template mendefinisikan sumber daya kustom dalam CloudFormation template mereka. Ini termasuk token layanan dan parameter data input apa pun. Token layanan dan struktur data input ditentukan oleh penyedia sumber daya khusus. Token layanan menentukan SNS topik Amazon ARN atau ARN fungsi Lambda dan selalu diperlukan, tetapi data input bersifat opsional tergantung pada sumber daya khusus.
Sekarang, setiap kali ada yang menggunakan template untuk membuat, memperbarui, atau menghapus sumber daya kustom, CloudFormation mengirimkan permintaan ke token layanan yang ditentukan, dan kemudian menunggu respons sebelum melanjutkan dengan operasi tumpukan.
Berikut ini merangkum alur untuk membuat tumpukan dari template:
-
CloudFormation mengirimkan permintaan ke token layanan yang ditentukan. Permintaan tersebut mencakup informasi seperti jenis permintaan dan Layanan Penyimpanan Simple Amazon yang telah ditandatangani sebelumnyaURL, tempat sumber daya kustom mengirimkan tanggapan. Untuk informasi selengkapnya tentang apa saja yang disertakan dalam permintaan, lihat Objek permintaan sumber daya kustom.
Data sampel berikut menunjukkan apa yang CloudFormation termasuk dalam
Create
permintaan. Dalam contoh ini,ResourceProperties
memungkinkan CloudFormation untuk membuat payload khusus untuk dikirim ke fungsi Lambda.{ "RequestType" : "Create", "ResponseURL" : "http://pre-signed-S3-url-for-response", "StackId" : "arn:aws:cloudformation:us-west-2:123456789012:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10", "RequestId" : "unique id for this create request", "ResourceType" : "Custom::TestResource", "LogicalResourceId" : "MyTestResource", "ResourceProperties" : { "Name" : "Value", "List" : [ "1", "2", "3" ] } }
-
Penyedia sumber daya kustom memproses CloudFormation permintaan dan mengembalikan respons
SUCCESS
atauFAILED
ke pra-ditandatanganiURL. Penyedia sumber daya khusus memberikan respons dalam file yang JSON diformat -dan mengunggahnya ke S3 yang telah ditandatangani sebelumnya. URL Untuk informasi selengkapnya, lihat Mengunggah objek menggunakan pra-tanda tangan URLs di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.Sebagai tanggapan, penyedia sumber daya kustom juga dapat menyertakan pasangan nama-nilai yang dapat diakses oleh pengembang template. Misalnya, respons dapat menyertakan data output jika permintaan berhasil atau pesan kesalahan jika permintaan gagal. Untuk informasi selengkapnya tentang respons, lihat Objek tanggapan sumber daya khusus.
penting
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 (sepertiDescribeStackEvents
).Untuk informasi selengkapnya tentang penggunaan
NoEcho
untuk menutupi informasi sensitif, lihat praktik Jangan menanamkan kredensial dalam templat Anda terbaik.Penyedia sumber daya khusus bertanggung jawab untuk mendengarkan dan menanggapi permintaan. Misalnya, untuk SNS pemberitahuan Amazon, penyedia sumber daya khusus harus mendengarkan dan menanggapi pemberitahuan yang dikirim ke topik tertentuARN. CloudFormation menunggu dan mendengarkan tanggapan di lokasi yang telah ditandatangani sebelumnyaURL.
Data contoh berikut menunjukkan apa yang mungkin disertakan oleh sumber daya kustom dalam respons:
{ "Status" : "SUCCESS", "PhysicalResourceId" : "TestResource1", "StackId" : "arn:aws:cloudformation:us-west-2:123456789012:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10", "RequestId" : "unique id for this create request", "LogicalResourceId" : "MyTestResource", "Data" : { "OutputName1" : "Value1", "OutputName2" : "Value2", } }
-
Setelah mendapat
SUCCESS
respons, CloudFormation lanjutkan dengan operasi tumpukan. Jika responsFAILED
atau tidak ada respons dikembalikan, operasi gagal. Setiap data keluaran dari sumber daya kustom disimpan di URL lokasi yang telah ditandatangani sebelumnya. Pengembang template dapat mengambil data tersebut dengan menggunakan Fn::GetAttfungsi.
catatan
Jika Anda menggunakan fitur VPCtitik akhir, sumber daya khusus di dalamnya VPC harus memiliki akses ke bucket S3 CloudFormation -spesifik. Sumber daya khusus harus mengirim tanggapan ke Amazon URL S3 yang telah ditandatangani sebelumnya. Jika mereka tidak dapat mengirim tanggapan ke Amazon S3, tidak CloudFormation akan menerima respons dan operasi tumpukan gagal. Untuk informasi selengkapnya, lihat Akses CloudFormation menggunakan endpoint antarmuka ()AWS PrivateLink.
Batas waktu respons
Batas waktu default untuk sumber daya kustom Anda adalah 3600 detik (1 jam). Jika tidak ada respons yang diterima selama waktu ini, operasi tumpukan gagal.
Anda dapat menyesuaikan nilai batas waktu berdasarkan berapa lama Anda mengharapkan respons dari sumber daya kustom. Misalnya, saat menyediakan sumber daya khusus yang memanggil fungsi Lambda yang diharapkan merespons dalam waktu lima menit, Anda dapat mengatur batas waktu lima menit dalam template tumpukan dengan menentukan properti. ServiceTimeout
Untuk informasi selengkapnya, lihat Objek permintaan sumber daya kustom. Dengan cara ini, jika ada kesalahan dalam fungsi Lambda yang menyebabkannya macet, CloudFormation akan gagal operasi tumpukan setelah lima menit alih-alih menunggu satu jam penuh.
Namun, berhati-hatilah untuk tidak menetapkan nilai batas waktu terlalu rendah. Untuk menghindari batas waktu yang tidak terduga, pastikan sumber daya kustom Anda memiliki cukup waktu untuk melakukan tindakan yang diperlukan dan mengembalikan respons.