Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menentukan data input untuk digunakan dalam tes kontrak
Secara default, CloudFormation melakukan tes kontrak menggunakan properti input yang dihasilkan dari pola yang Anda tentukan dalam skema Hook Anda. Namun, sebagian besar Hooks cukup kompleks sehingga properti input untuk membuat atau memperbarui tumpukan penyediaan memerlukan pemahaman tentang sumber daya yang disediakan. Untuk mengatasi ini, Anda dapat menentukan input yang CloudFormation digunakan saat melakukan tes kontraknya.
CloudFormation menawarkan dua cara bagi Anda untuk menentukan data input untuk digunakan saat melakukan tes kontrak:
-
Mengganti berkas
Menggunakan
overridesfile menyediakan cara ringan untuk menentukan data input untuk properti spesifik tertentu CloudFormation untuk digunakan selamapreCreate,preUpdatedanpreDeletepengujian operasi. -
Berkas masukan
Anda juga dapat menggunakan beberapa
inputfile untuk menentukan data input uji kontrak jika:-
Anda ingin atau perlu menentukan data input yang berbeda untuk membuat, memperbarui, dan menghapus operasi, atau data yang tidak valid untuk menguji.
-
Anda ingin menentukan beberapa set data input yang berbeda.
-
Menentukan data input menggunakan file override
Berikut ini adalah contoh data input Amazon S3 Hook menggunakan overrides file.
{ "CREATE_PRE_PROVISION": { "AWS::S3::Bucket": { "resourceProperties": { "/BucketName": "encryptedbucket-us-west-2-contractor", "/BucketEncryption/ServerSideEncryptionConfiguration": [ { "BucketKeyEnabled": true, "ServerSideEncryptionByDefault": { "KMSMasterKeyID": "KMS-KEY-ARN", "SSEAlgorithm": "aws:kms" } } ] } }, "AWS::SQS::Queue": { "resourceProperties": { "/QueueName": "MyQueueContract", "/KmsMasterKeyId": "hellocontract" } } }, "UPDATE_PRE_PROVISION": { "AWS::S3::Bucket": { "resourceProperties": { "/BucketName": "encryptedbucket-us-west-2-contractor", "/BucketEncryption/ServerSideEncryptionConfiguration": [ { "BucketKeyEnabled": true, "ServerSideEncryptionByDefault": { "KMSMasterKeyID": "KMS-KEY-ARN", "SSEAlgorithm": "aws:kms" } } ] }, "previousResourceProperties": { "/BucketName": "encryptedbucket-us-west-2-contractor", "/BucketEncryption/ServerSideEncryptionConfiguration": [ { "BucketKeyEnabled": true, "ServerSideEncryptionByDefault": { "KMSMasterKeyID": "KMS-KEY-ARN", "SSEAlgorithm": "aws:kms" } } ] } } }, "INVALID_UPDATE_PRE_PROVISION": { "AWS::S3::Bucket": { "resourceProperties": { "/BucketName": "encryptedbucket-us-west-2-contractor", "/BucketEncryption/ServerSideEncryptionConfiguration": [ { "BucketKeyEnabled": true, "ServerSideEncryptionByDefault": { "KMSMasterKeyID": "KMS-KEY-ARN", "SSEAlgorithm": "AES256" } } ] }, "previousResourceProperties": { "/BucketName": "encryptedbucket-us-west-2-contractor", "/BucketEncryption/ServerSideEncryptionConfiguration": [ { "BucketKeyEnabled": true, "ServerSideEncryptionByDefault": { "KMSMasterKeyID": "KMS-KEY-ARN", "SSEAlgorithm": "aws:kms" } } ] } } }, "INVALID": { "AWS::SQS::Queue": { "resourceProperties": { "/QueueName": "MyQueueContract", "/KmsMasterKeyId": "KMS-KEY-ARN" } } } }
Menentukan data input menggunakan file input
Gunakan input file untuk menentukan berbagai jenis data input CloudFormation untuk digunakan: preCreate input, preUpdate input, dan input tidak valid. Setiap jenis data ditentukan dalam file terpisah. Anda juga dapat menentukan beberapa set data input untuk tes kontrak.
Untuk menentukan input file yang akan CloudFormation digunakan dalam pengujian kontrak, tambahkan inputs folder ke direktori root proyek Hooks Anda. Kemudian tambahkan file input Anda.
Tentukan jenis data input yang berisi file dengan menggunakan konvensi penamaan berikut, di nmana bilangan bulat:
-
inputs_: Gunakan file dengann_pre_create.jsonpreCreatepenangan untuk menentukan input untuk membuat sumber daya. -
inputs_: Gunakan file dengann_pre_update.jsonpreUpdatepenangan untuk menentukan input untuk memperbarui sumber daya. -
inputs_: Gunakan file dengann_pre_delete.jsonpreDeletepenangan untuk menentukan input untuk menghapus sumber daya. -
inputs_: Untuk menentukan input yang tidak valid untuk diuji.n_invalid.json
Untuk menentukan beberapa set data masukan untuk pengujian kontrak, tambahkan bilangan bulat dalam nama file untuk mengurutkan kumpulan data masukan Anda. Misalnya, kumpulan file input pertama Anda harus diberi namainputs_1_pre_create.json,inputs_1_pre_update.json, daninputs_1_pre_invalid.json. Set Anda berikutnya akan diberi nama inputs_2_pre_create.jsoninputs_2_pre_update.json,, daninputs_2_pre_invalid.json, dan seterusnya.
Setiap file input adalah JSON file yang hanya berisi properti sumber daya yang akan digunakan dalam pengujian.
Berikut ini adalah direktori contoh inputs untuk Amazon S3 menentukan data input menggunakan file input.
inputs_1_pre_create.json-
Berikut ini adalah contoh dari tes
inputs_1_pre_create.jsonkontrak.{ "AWS::S3::Bucket": { "resourceProperties": { "AccessControl": "BucketOwnerFullControl", "AnalyticsConfigurations": [], "BucketEncryption": { "ServerSideEncryptionConfiguration": [ { "BucketKeyEnabled": true, "ServerSideEncryptionByDefault": { "KMSMasterKeyID": "KMS-KEY-ARN", "SSEAlgorithm": "aws:kms" } } ] }, "BucketName": "encryptedbucket-us-west-2" } }, "AWS::SQS::Queue": { "resourceProperties": { "QueueName": "MyQueue", "KmsMasterKeyId": "KMS-KEY-ARN" } } } inputs_1_pre_update.json-
Berikut ini adalah contoh dari tes
inputs_1_pre_update.jsonkontrak.{ "AWS::S3::Bucket": { "resourceProperties": { "BucketEncryption": { "ServerSideEncryptionConfiguration": [ { "BucketKeyEnabled": true, "ServerSideEncryptionByDefault": { "KMSMasterKeyID": "KMS-KEY-ARN", "SSEAlgorithm": "aws:kms" } } ] }, "BucketName": "encryptedbucket-us-west-2" }, "previousResourceProperties": { "BucketEncryption": { "ServerSideEncryptionConfiguration": [ { "BucketKeyEnabled": true, "ServerSideEncryptionByDefault": { "KMSMasterKeyID": "KMS-KEY-ARN", "SSEAlgorithm": "aws:kms" } } ] }, "BucketName": "encryptedbucket-us-west-2" } } } inputs_1_invalid.json-
Berikut ini adalah contoh dari tes
inputs_1_invalid.jsonkontrak.{ "AWS::S3::Bucket": { "resourceProperties": { "AccessControl": "BucketOwnerFullControl", "AnalyticsConfigurations": [], "BucketEncryption": { "ServerSideEncryptionConfiguration": [ { "ServerSideEncryptionByDefault": { "SSEAlgorithm": "AES256" } } ] }, "BucketName": "encryptedbucket-us-west-2" } }, "AWS::SQS::Queue": { "resourceProperties": { "NotValid": "The property of this resource is not valid." } } } inputs_1_invalid_pre_update.json-
Berikut ini adalah contoh dari tes
inputs_1_invalid_pre_update.jsonkontrak.{ "AWS::S3::Bucket": { "resourceProperties": { "BucketEncryption": { "ServerSideEncryptionConfiguration": [ { "BucketKeyEnabled": true, "ServerSideEncryptionByDefault": { "KMSMasterKeyID": "KMS-KEY-ARN", "SSEAlgorithm": "AES256" } } ] }, "BucketName": "encryptedbucket-us-west-2" }, "previousResourceProperties": { "BucketEncryption": { "ServerSideEncryptionConfiguration": [ { "BucketKeyEnabled": true, "ServerSideEncryptionByDefault": { "KMSMasterKeyID": "KMS-KEY-ARN", "SSEAlgorithm": "aws:kms" } } ] }, "BucketName": "encryptedbucket-us-west-2" } } }