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 kefalse
. 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 memilikiAWS::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 kefalse
. 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 }