Referensi sintaks skema untuk Hooks AWS CloudFormation - AWS CloudFormation

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

Referensi sintaks skema untuk Hooks AWS CloudFormation

Bagian ini menjelaskan sintaks skema yang Anda gunakan untuk mengembangkan AWS CloudFormation Hooks.

Hook mencakup spesifikasi Hook yang diwakili oleh JSON skema dan penangan Hook. Langkah pertama dalam membuat Hook kustom adalah pemodelan skema yang mendefinisikan Hook, propertinya, dan atributnya. Saat Anda menginisialisasi proyek Hook kustom menggunakan CloudFormation CLI initperintah, file skema Hook dibuat untuk Anda. Gunakan file skema ini sebagai titik awal untuk menentukan bentuk dan semantik Hook kustom Anda.

Skema sintaks

Skema berikut adalah struktur untuk Hook.

{ "typeName": "string", "description": "string", "sourceUrl": "string", "documentationUrl": "string", "definitions": { "definitionName": { . . . } }, "typeConfiguration": { "properties": { "propertyName": { "description": "string", "type": "string", . . . }, }, "required": [ "propertyName" . . . ], "additionalProperties": false }, "handlers": { "preCreate": { "targetNames": [ ], "permissions": [ ] }, "preUpdate": { "targetNames": [ ], "permissions": [ ] }, "preDelete": { "targetNames": [ ], "permissions": [ ] } }, "additionalProperties": false }
typeName

Nama unik untuk Hook Anda. Menentukan namespace tiga bagian untuk Hook Anda, dengan pola yang direkomendasikan. Organization::Service::Hook

catatan

Ruang nama organisasi berikut dicadangkan dan tidak dapat digunakan dalam nama tipe Hook Anda:

  • Alexa

  • AMZN

  • Amazon

  • ASK

  • AWS

  • Custom

  • Dev

Wajib: Ya

Pola: ^[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}$

Minimal: 10

Maksimum: 196

description

Deskripsi singkat tentang Hook yang ditampilkan di CloudFormation konsol.

Wajib: Ya

sourceUrl

Kode sumber untuk Hook, jika publik. URL

Wajib: Tidak

Maksimum: 4096

documentationUrl

Halaman URL yang menyediakan dokumentasi rinci untuk Hook.

Wajib: Ya

Pola: ^https\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])(\:[0-9]*)*([\?/#].*)?$

Maksimum: 4096

catatan

Meskipun skema Hook harus menyertakan deskripsi properti yang lengkap dan akurat, Anda dapat menggunakan documentationURL properti untuk memberikan detail lebih lanjut kepada pengguna, termasuk contoh, kasus penggunaan, dan informasi terperinci lainnya.

definitions

Gunakan definitions blok untuk menyediakan skema properti Hook bersama.

Ini dianggap sebagai praktik terbaik untuk menggunakan definitions bagian untuk menentukan elemen skema yang dapat digunakan di beberapa titik dalam skema tipe Hook Anda. Anda kemudian dapat menggunakan JSON pointer untuk mereferensikan elemen itu di tempat yang sesuai dalam skema tipe Hook Anda.

Wajib: Tidak

typeConfiguration

Definisi data konfigurasi Hook.

Wajib: Ya

properties

Sifat-sifat Hook. Semua properti Hook harus dinyatakan dalam skema. Sejajarkan properti skema Hook dengan properti konfigurasi tipe Hook.

catatan

Properti bersarang tidak diizinkan. Sebagai gantinya, tentukan properti bersarang dalam definitions elemen, dan gunakan $ref penunjuk untuk mereferensikannya di properti yang diinginkan.

additionalProperties

additionalProperties harus diatur ke false. Semua properti Hook harus dinyatakan dalam skema: input arbitrer tidak diperbolehkan.

Wajib: Ya

Nilai yang valid: false

handlers

Handler menentukan operasi yang dapat memulai Hook didefinisikan dalam skema, seperti titik pemanggilan Hook. Misalnya, preUpdate handler dipanggil sebelum operasi pembaruan untuk semua target yang ditentukan di handler.

Nilai yang valid: preCreate | preUpdate | preDelete

catatan

Setidaknya satu nilai harus ditentukan untuk handler.

penting

Operasi tumpukan yang menghasilkan status UpdateCleanup jangan memanggil Hook. Misalnya, selama dua skenario berikut, preDelete handler Hook tidak dipanggil:

  • tumpukan diperbarui setelah menghapus satu sumber daya dari template.

  • sumber daya dengan jenis penggantian pembaruan dihapus.

targetNames

Sebuah array string dari nama tipe yang Hook target. Misalnya, jika preCreate handler memiliki AWS::S3::Bucket target, Hook berjalan untuk bucket Amazon S3 selama fase preprovisioning.

  • TargetName

    Tentukan setidaknya satu nama target untuk setiap handler yang diimplementasikan.

    Pola: ^[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}$

    Minimal: 1

    Wajib: Ya

    Awas

    SSM SecureString dan referensi dinamis Secrets Manager tidak diselesaikan sebelum diteruskan ke Hooks.

permissions

Sebuah array string yang menentukan AWS izin yang diperlukan untuk memanggil handler.

Wajib: Ya

additionalProperties

additionalProperties harus diatur ke false. Semua properti Hook harus dinyatakan dalam skema: input arbitrer tidak diperbolehkan.

Wajib: Ya

Nilai yang valid: false

Contoh skema Hooks

Contoh 1

Penelusuran Java dan Python menggunakan contoh kode berikut. Berikut ini adalah contoh struktur untuk Hook yang disebutmycompany-testing-mytesthook.json.

{ "typeName":"MyCompany::Testing::MyTestHook", "description":"Verifies S3 bucket and SQS queues properties before create and update", "sourceUrl":"https://mycorp.com/my-repo.git", "documentationUrl":"https://mycorp.com/documentation", "typeConfiguration":{ "properties":{ "minBuckets":{ "description":"Minimum number of compliant buckets", "type":"string" }, "minQueues":{ "description":"Minimum number of compliant queues", "type":"string" }, "encryptionAlgorithm":{ "description":"Encryption algorithm for SSE", "default":"AES256", "type":"string" } }, "required":[ ], "additionalProperties":false }, "handlers":{ "preCreate":{ "targetNames":[ "AWS::S3::Bucket", "AWS::SQS::Queue" ], "permissions":[ ] }, "preUpdate":{ "targetNames":[ "AWS::S3::Bucket", "AWS::SQS::Queue" ], "permissions":[ ] }, "preDelete":{ "targetNames":[ "AWS::S3::Bucket", "AWS::SQS::Queue" ], "permissions":[ "s3:ListBucket", "s3:ListAllMyBuckets", "s3:GetEncryptionConfiguration", "sqs:ListQueues", "sqs:GetQueueAttributes", "sqs:GetQueueUrl" ] } }, "additionalProperties":false }

Contoh 2

Contoh berikut adalah skema yang menggunakan STACK dan CAHNGE_SET targetNames untuk menargetkan template tumpukan dan operasi set perubahan.

{ "typeName":"MyCompany::Testing::MyTestHook", "description":"Verifies Stack and Change Set properties before create and update", "sourceUrl":"https://mycorp.com/my-repo.git", "documentationUrl":"https://mycorp.com/documentation", "typeConfiguration":{ "properties":{ "minBuckets":{ "description":"Minimum number of compliant buckets", "type":"string" }, "minQueues":{ "description":"Minimum number of compliant queues", "type":"string" }, "encryptionAlgorithm":{ "description":"Encryption algorithm for SSE", "default":"AES256", "type":"string" } }, "required":[ ], "additionalProperties":false }, "handlers":{ "preCreate":{ "targetNames":[ "STACK", "CHANGE_SET" ], "permissions":[ ] }, "preUpdate":{ "targetNames":[ "STACK" ], "permissions":[ ] }, "preDelete":{ "targetNames":[ "STACK" ], "permissions":[ ] } }, "additionalProperties":false }