Sumber daya khusus - AWS CloudFormation

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

Sumber daya khusus

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.

  • MendukungCreate,Update, dan Delete 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, dan List (CRUDL)

  • Mendukung deteksi penyimpangan pada jenis sumber daya privat dan pihak ketiga

Tidak seperti sumber daya khusus, sumber daya berbasis registri tidak perlu mengaitkan topik Amazon SNS atau fungsi Lambda untuk melakukan operasi. CRUDL Untuk informasi selengkapnya, lihat Menggunakan AWS CloudFormation registri.

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::CustomResourceatau jenis Custom::MyCustomResourceTypeNamesumber daya. Sumber daya khusus memerlukan satu properti, token layanan, yang menentukan ke mana permintaan CloudFormation dikirim, seperti topik Amazon SNS atau fungsi Lambda.

Topik berikut memberikan informasi tentang cara menggunakan sumber daya khusus.

catatan

Jika Anda menggunakan fitur titik akhir VPC, sumber daya khusus di VPC harus memiliki akses ke bucket S3 khusus. CloudFormation Sumber daya kustom harus mengirim respons ke URL pre-signed Amazon S3. 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.

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.

  1. Penyedia sumber daya kustom menulis logika yang menentukan cara menangani permintaan dari CloudFormation dan melakukan tindakan pada sumber daya kustom.

  2. Penyedia sumber daya khusus membuat topik Amazon SNS atau fungsi Lambda tempat CloudFormation dapat mengirim permintaan. Topik Amazon SNS atau fungsi Lambda harus berada di Wilayah yang sama tempat tumpukan akan dibuat.

  3. Penyedia sumber daya khusus memberikan ARN topik Amazon SNS atau ARN fungsi Lambda kepada pengembang template.

  4. 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 topik Amazon SNS ARN atau fungsi Lambda ARN 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:

  1. CloudFormation mengirimkan permintaan ke token layanan yang ditentukan. Permintaan tersebut mencakup informasi seperti jenis permintaan dan URL Layanan Penyimpanan Amazon Simple yang telah ditandatangani sebelumnya, 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" ] } }
  2. Penyedia sumber daya kustom memproses CloudFormation permintaan dan mengembalikan respons SUCCESS atau FAILED ke URL yang telah ditandatangani sebelumnya. Penyedia sumber daya khusus memberikan respons dalam file berformat JSON dan mengunggahnya ke URL S3 yang telah ditandatangani sebelumnya. Untuk informasi selengkapnya, lihat Mengunggah objek menggunakan URL yang telah ditandatangani sebelumnya 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 akan terlihat melalui API yang memunculkan nilai properti (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 notifikasi Amazon SNS, penyedia sumber daya khusus harus mendengarkan dan menanggapi notifikasi yang dikirim ke topik tertentu ARN. CloudFormation menunggu dan mendengarkan respons di lokasi URL yang telah ditandatangani sebelumnya.

    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", } }
  3. Setelah mendapat SUCCESS respons, CloudFormation lanjutkan dengan operasi tumpukan. Jika respons FAILED atau tidak ada respons dikembalikan, operasi gagal. Data output apa pun dari sumber daya kustom disimpan di lokasi URL pre-signed. Pengembang template dapat mengambil data tersebut dengan menggunakan Fn::GetAttfungsi.

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.