Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Especificación de los datos de entrada para su uso en las pruebas de contrato
De forma predeterminada, CloudFormation realiza pruebas de contrato utilizando las propiedades de entrada generadas a partir de los patrones que definas en tu esquema de Hook. Sin embargo, la mayoría de los Hooks son lo suficientemente complejos como para que las propiedades de entrada para precrear o actualizar las pilas de aprovisionamiento requieran una comprensión del recurso que se está aprovisionando. Para solucionar este problema, puedes especificar la entrada que CloudFormation utilizan al realizar sus pruebas de contrato.
CloudFormation ofrece dos formas de especificar los datos de entrada para utilizarlos al realizar las pruebas de contrato:
-
Anula el archivo
El uso de un
overridesarchivo proporciona una forma ligera de especificar los datos de entrada para determinadas propiedades específicas CloudFormation para utilizarlos durantepreCreatelas pruebaspreUpdateypreDeletelas operaciones. -
Archivos de entrada
También puede usar varios
inputarchivos para especificar los datos de entrada de las pruebas de contrato si:-
Desea o necesita especificar datos de entrada diferentes para las operaciones de creación, actualización y eliminación, o bien datos no válidos con los que realizar las pruebas.
-
Desea especificar varios conjuntos de datos de entrada diferentes.
-
Especificar los datos de entrada mediante un archivo de anulación
El siguiente es un ejemplo de los datos de entrada de Amazon S3 Hook utilizando el overrides archivo.
{ "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" } } } }
Especificar los datos de entrada mediante archivos de entrada
Utilice input los archivos para especificar diferentes tipos de datos de entrada CloudFormation para su uso: preCreate entrada, preUpdate entrada y entrada no válida. Cada tipo de datos se especifica en un archivo independiente. También puede especificar varios conjuntos de datos de entrada para las pruebas de contrato.
Para especificar input los archivos CloudFormation que se van a utilizar en las pruebas por contrato, añade una inputs carpeta al directorio raíz de tu proyecto de Hooks. Luego agrega tus archivos de entrada.
Especifique el tipo de datos de entrada que contiene un archivo mediante las siguientes convenciones de nomenclatura, donde nes un número entero:
-
inputs_: utilice archivos conn_pre_create.jsonpreCreatecontroladores para especificar las entradas a fin de crear el recurso. -
inputs_: Utilice archivos conn_pre_update.jsonpreUpdatecontroladores para especificar las entradas a fin de actualizar el recurso. -
inputs_: Utilice archivos conn_pre_delete.jsonpreDeletecontroladores para especificar las entradas a fin de eliminar el recurso. -
inputs_: Para especificar entradas no válidas para probarlas.n_invalid.json
Para especificar varios conjuntos de datos de entrada para las pruebas de contrato, incremente el número entero en los nombres de los archivos para ordenar los conjuntos de datos de entrada. Por ejemplo, el primer conjunto de archivos de entrada debe tener el nombre inputs_1_pre_create.jsoninputs_1_pre_update.json, yinputs_1_pre_invalid.json. El siguiente conjunto se llamaría inputs_2_pre_create.jsoninputs_2_pre_update.json, yinputs_2_pre_invalid.json, y así sucesivamente.
Cada archivo de entrada es un archivo JSON que contiene solo las propiedades del recurso que se utilizarán en las pruebas.
El siguiente es un ejemplo de directorio inputs para Amazon S3 especificar datos de entrada mediante archivos de entrada.
inputs_1_pre_create.json-
El siguiente es un ejemplo de la prueba de
inputs_1_pre_create.jsoncontrato.{ "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-
El siguiente es un ejemplo de la prueba de
inputs_1_pre_update.jsoncontrato.{ "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-
El siguiente es un ejemplo de la prueba de
inputs_1_invalid.jsoncontrato.{ "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-
El siguiente es un ejemplo de la prueba de
inputs_1_invalid_pre_update.jsoncontrato.{ "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" } } }