Esta es la nueva Guía de referencia de plantillas de CloudFormation. Actualice sus marcadores y enlaces. Para obtener ayuda sobre cómo empezar a usar CloudFormation, consulte la Guía del usuario de AWS CloudFormation.
Transformación AWS::LanguageExtensions
En este tema se describe cómo usar la transformación AWS::LanguageExtensions para habilitar funciones y capacidades adicionales que no están disponibles de forma predeterminada.
AWS::LanguageExtensions es una macro de CloudFormation que, al hacer referencia a ella en la plantilla de la pila, actualiza cualquier función intrínseca definida por la transformación a su valor resuelto dentro de la plantilla al crear o actualizar una pila mediante un conjunto de cambios.
Al incluir esta transformación en la plantilla de CloudFormation, puede acceder a características adicionales, como Fn::ForEach, que permiten operaciones más avanzadas, como la iteración. También puede usar funciones intrínsecas en lugares en los que normalmente no están permitidas, como en las funciones Ref y Fn::GetAtt.
Uso
Para usar la transformación AWS::LanguageExtensions, debe declararla en el nivel superior de la plantilla de CloudFormation. No se puede utilizar AWS::LanguageExtensions como transformación integrada en ninguna otra sección de la plantilla.
La declaración debe usar la cadena literal AWS::LanguageExtensions como valor. No puede utilizar un parámetro o función para especificar un valor de transformación.
Sintaxis
Para declarar esta transformación en su plantilla de CloudFormation, use la siguiente sintaxis:
JSON
{ "Transform":"AWS::LanguageExtensions", "Resources":{...} }
YAML
Transform: AWS::LanguageExtensions Resources:...
La transformación AWS::LanguageExtensions es una declaración independiente sin parámetros adicionales.
Compatibilidad con funciones adicionales
La transformación AWS::LanguageExtensions admite las siguientes funciones adicionales:
Consideraciones
Cuando use la transformación AWS::LanguageExtensions, tenga en cuenta las siguientes consideraciones:
-
Si actualiza una pila que usa la transformación
AWS::LanguageExtensions, le recomendamos que no utilice la opción Utilizar plantilla existente en la consola de CloudFormation ni la opción equivalente de la línea de comandos--use-previous-template. La transformaciónAWS::LanguageExtensionsresuelve los parámetros en valores literales durante el procesamiento. Cuando se utiliza--use-previous-template, CloudFormation utiliza esta plantilla procesada con los valores literales anteriores, lo que impide que se apliquen nuevos valores de parámetros y actualizaciones de parámetros de Systems Manager. En su lugar, proporcione la plantilla original para garantizar que los parámetros se vuelvan a resolver con los valores actuales. -
La sintaxis YAML de formato corto no se admite en una plantilla para las funciones intrínsecas que proporcione la transformación
AWS::LanguageExtensions. Use las referencias explícitas a estas funciones. Por ejemplo, utiliceFn::Lengthen lugar de!Length. -
Actualmente, la AWS SAM CLI no admite la función intrínseca
Fn::ForEachde la transformaciónAWS::LanguageExtensions. -
Si usa varias transformaciones, use un formato de lista. Si usa macros personalizadas, coloque las transformaciones que proporcione AWS después de sus macros personalizadas. Si usa las transformaciones
AWS::LanguageExtensionsyAWS::Serverless, la transformaciónAWS::LanguageExtensionsdebe aparecer antes que la transformaciónAWS::Serverlessen la lista. -
Las funciones y los atributos proporcionados por la transformación
AWS::LanguageExtensionssolo se admiten en las seccionesResources,ConditionsyOutputsde la plantilla.
Ejemplos
En los siguientes ejemplos se muestra cómo usar la transformación AWS::LanguageExtensions para usar la función intrínseca Fn::Length, definida por la transformación.
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Transform": "AWS::LanguageExtensions", "Parameters": { "QueueList": { "Type": "CommaDelimitedList" }, "QueueNameParam": { "Description": "Name for your SQS queue", "Type": "String" } }, "Resources": { "Queue": { "Type": "AWS::SQS::Queue", "Properties": { "QueueName": { "Ref": "QueueNameParam" }, "DelaySeconds": { "Fn::Length": { "Ref": "QueueList" } } } } } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Transform: AWS::LanguageExtensions Parameters: QueueList: Type: CommaDelimitedList QueueNameParam: Description: Name for your SQS queue Type: String Resources: Queue: Type: AWS::SQS::Queue Properties: QueueName: !Ref QueueNameParam DelaySeconds: 'Fn::Length': !Ref QueueList
Recursos relacionados
Para ver más ejemplos, consulte los siguientes temas.
Para obtener información general sobre el uso de las macros, consulte Procesamientos personalizados en plantillas de CloudFormation con macros de plantillas en la Guía del usuario de AWS CloudFormation.