Transformación AWS::Include - AWS CloudFormation

Transformación AWS::Include

Utilice la transformación AWS::Include, que es una macro alojado por AWS CloudFormation, para insertar contenido reutilizable en las plantillas. La transformación AWS::Include le permite crear una referencia a un fragmento de plantilla en un bucket de Amazon S3. Cuando Creación de un conjunto de cambios o Actualización de pilas con conjuntos de cambios, y las plantillas hacen referencia a AWS::Include, AWS CloudFormation introduce el contenido del archivo especificado en la ubicación de la transformación en la plantilla. La función AWS::Include se comporta de forma similar a una directiva include, copy o import en los lenguajes de programación.

Por ejemplo, puede tener una función de Lambda que desee reutilizar en una o varias plantillas de AWS CloudFormation.

De uso

Puede utilizar la transformación AWS::Include en cualquier lugar de la plantilla de AWS CloudFormation, salvo en la sección de los parámetros de las plantillas o en el campo de la versión de la plantilla. Por ejemplo, puede utilizar AWS::Include en la sección de mapeos.

Sintaxis de nivel superior de una plantilla

Para incluir la transformación AWS::Include en la parte superior de una plantilla, utilice la siguiente sintaxis en la sección Transform.

JSON

{ "Transform" : { "Name" : "AWS::Include", "Parameters" : { "Location" : "s3://DOC-EXAMPLE-BUCKET/MyFileName.json" } } }

YAML

Transform: Name: 'AWS::Include' Parameters: Location: 's3://DOC-EXAMPLE-BUCKET/MyFileName.yaml'

Sintaxis cuando la transformación está integrada en una sección de una plantilla

Para incluir una transformación que está integrada en una sección, utilice la función intrínseca Fn::Transform y la siguiente sintaxis.

JSON

{ "Fn::Transform" : { "Name" : "AWS::Include", "Parameters" : { "Location": "s3://DOC-EXAMPLE-BUCKET/MyFileName.json" } } }

YAML

'Fn::Transform': Name: 'AWS::Include' Parameters: Location: s3://DOC-EXAMPLE-BUCKET/MyFileName.yaml

Parameters

Location

La ubicación es una URI de Amazon S3 con un nombre de archivo específico en un bucket de S3. Por ejemplo, s3://MyBucketName/MyFile.yaml.

Observaciones

Cuando utilice AWS::Include, tenga en cuenta las siguientes consideraciones. Para consideraciones generales acerca de cómo usar macros, consulte Consideraciones sobre la creación de definiciones de macros de AWS CloudFormation.

  • En la actualidad, se admiten URI de Amazon S3, pero en ningún otro formato de Amazon S3 (como ARN de Amazon S3). Debe ser un bucket de Amazon S3, en lugar de algo parecido a un repositorio de GitHub.

  • Cualquier persona que tenga acceso a la dirección URL de Amazon S3 puede incluir el fragmento en su plantilla.

  • Sus fragmentos de plantilla tienen que ser un JSON válido.

  • Sus fragmentos de plantilla tienen que ser objetos de clave–valor válidos; por ejemplo, "KeyName": "keyValue".

  • No puede utilizar AWS::Include para hacer referencia a un fragmento de código de la plantilla que también utiliza AWS::Include.

  • Si los fragmentos cambian, la pila no aplica automáticamente esos cambios. Para obtener esos cambios, debe actualizar la pila con los fragmentos actualizados. Si actualiza la pila, asegúrese de que los fragmentos que ha incluido no han cambiado sin que usted lo sepa. Para verificarlo antes de actualizar la pila, compruebe el conjunto de cambios.

  • Al crear plantillas y fragmentos, puede combinar los lenguajes de plantillas YAML y JSON.

  • Actualmente no admitimos el uso de notaciones abreviadas para los fragmentos de YAML.

  • Puede proporcionar una URI de Amazon S3 de replicación entre regiones con AWS::Include. Asegúrese de comprobar los nombres de los buckets de Amazon S3 al obtener acceso a los objetos de la replicación entre regiones. Para obtener más información, consulte Replicación entre regiones.

Ejemplo

El siguiente ejemplo muestra cómo utilizar la transformación AWS::Include para ejecutar un identificador de condición de espera.

Tanto la versión JSON como la versión YAML utilizan el siguiente fragmento de la condición de espera. Guarde el archivo como single_wait_condition.yaml y almacénelo en un bucket de S3 con el mismo nombre que DOC-EXAMPLE-BUCKET.

WebServerWaitHandle: Type: 'AWS::CloudFormation::WaitConditionHandle'

JSON

{ "Resources": { "MyWaitHandle": { "Type": "AWS::CloudFormation::WaitConditionHandle" }, "Fn::Transform": { "Name": "AWS::Include", "Parameters": { "Location": "s3://DOC-EXAMPLE-BUCKET/single_wait_condition.yaml" } } } }

YAML

Resources: MyWaitHandle: Type: 'AWS::CloudFormation::WaitConditionHandle' 'Fn::Transform': Name: 'AWS::Include' Parameters: Location: "s3://DOC-EXAMPLE-BUCKET/single_wait_condition.yaml"