En este tema se describe cómo usar la transformación AWS::Include
para insertar contenido reutilizable en las plantillas de CloudFormation.
AWS::Include
es una macro de CloudFormation que, al hacer referencia a ella en la plantilla de la pila, inserta el contenido del archivo especificado en la ubicación de la transformación en la plantilla al crear o actualizar una pila mediante un conjunto de cambios. La función AWS::Include
se comporta de forma similar a una directiva include
, copy
o import
en los lenguajes de programación.
Uso
Puede utilizar la transformación AWS::Include
en cualquier lugar de la plantilla de CloudFormation, salvo en la sección de los parámetros de las plantillas o en 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 declarar esta transformación en la parte superior de su plantilla de CloudFormation, como sección Transform
, utilice la siguiente sintaxis:
JSON
{
"Transform":{
"Name":"AWS::Include",
"Parameters":{
"Location":"s3://amzn-s3-demo-bucket
/MyFileName.json
"
}
},
"Resources":{
...
}
}
YAML
Transform:
Name: 'AWS::Include'
Parameters:
Location: 's3://amzn-s3-demo-bucket
/MyFileName.yaml
'
Resources:
...
Sintaxis cuando la transformación está integrada en una sección de una plantilla
Para declarar esta transformación dentro de una sección de su plantilla de CloudFormation, utilice la función intrínseca Fn::Transform
y la siguiente sintaxis:
JSON
{
"Fn::Transform":{
"Name":"AWS::Include",
"Parameters":{
"Location":"s3://amzn-s3-demo-bucket
/MyFileName.json
"
}
}
}
YAML
'Fn::Transform':
Name: 'AWS::Include'
Parameters:
Location: s3://amzn-s3-demo-bucket
/MyFileName.yaml
Para obtener más información, consulte Fn::Transform.
Parámetros
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://
.amzn-s3-demo-bucket
/MyFile.yaml
Consideraciones
Cuando utilice AWS::Include
, tenga en cuenta las siguientes consideraciones. Para obtener más información sobre el uso de macros, consulte Consideraciones sobre las macros en la Guía del usuario 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 utilizaAWS::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 de objetos dentro de regiones y entre regiones en la Guía del usuario de Amazon S3.
Ejemplos
En los siguientes ejemplos, se muestra cómo utilizar la transformación AWS::Include
para ejecutar un identificador de condición de espera. Reemplace amzn-s3-demo-bucket
por el nombre real de su bucket.
En primer lugar, guarde un archivo YAML denominado single_wait_condition.yaml
en su bucket de S3 con el siguiente contenido:
MyWaitCondition
:
Type: AWS::CloudFormation::WaitCondition
Properties:
Handle: !Ref MyWaitHandle
Timeout: '4500'
A continuación, puede hacer referencia a este archivo en formato JSON o YAML.
JSON
{
"Resources": {
"MyWaitHandle": {
"Type": "AWS::CloudFormation::WaitConditionHandle"
},
"Fn::Transform": {
"Name": "AWS::Include",
"Parameters": {
"Location": "s3://amzn-s3-demo-bucket
/single_wait_condition.yaml"
}
}
}
}
YAML
Resources:
MyWaitHandle:
Type: AWS::CloudFormation::WaitConditionHandle
'Fn::Transform':
Name: 'AWS::Include'
Parameters:
Location: "s3://amzn-s3-demo-bucket
/single_wait_condition.yaml"
Para obtener más información, consulte Creación de condiciones de espera en una plantilla de CloudFormation en la Guía del usuario de AWS CloudFormation.