Transformação AWS::LanguageExtensions - AWS CloudFormation

Transformação AWS::LanguageExtensions

A transformação AWS::LanguageExtensions é uma macro hospedada pelo AWS CloudFormation que permite usar funções intrínsecas e outros recursos não incluídos por padrão no AWS CloudFormation. Quando um modelo referenciar AWS::LanguageExtensions e você estiver criando ou atualizando pilhas usando conjuntos de alterações, o AWS CloudFormation atualizará qualquer função intrínseca definida pela transformação para o valor resolvido dentro do modelo. Quando você adiciona a transformação AWS::LanguageExtensions a um modelo do AWS CloudFormation, pode usar funções intrínsecas como um parâmetro para Ref e Fn::GetAtt.

A transformação AWS::LanguageExtensions é compatível com as seguintes funções e atributos:

Uso

O valor da declaração de transformação deve ser uma sequência literal. Você não pode usar um parâmetro ou uma função para especificar um valor de transformação. Veja um exemplo de uma declaração de transformação no seguinte trecho:

Sintaxe no nível superior de um modelo

Use a transformação AWS::LanguageExtensions no nível superior de um modelo. Você não pode usar a transformação AWS::LanguageExtensions como uma transformação embutida em nenhuma outra seção do modelo.

JSON

"Transform": "AWS::LanguageExtensions"

YAML

Transform: AWS::LanguageExtensions

Parâmetros

A transformação AWS::LanguageExtensions não aceita parâmetros.

Observações

Ao usar a transformação AWS::LanguageExtensions, tenha em mente as seguintes considerações:

  • Se você atualizar uma pilha usando um valor de parâmetro diferente, não use a opção --use-previous-template quando o modelo original contiver a transformação. Use o modelo original, antes da transformação, na chamada de UpdateStack. A pilha será atualizada com os novos valores dos parâmetros.

  • A sintaxe YAML de formato curto não é compatível com um modelo para funções intrínsecas disponíveis apenas na transformação AWS::LanguageExtensions. Exemplos de funções intrínsecas disponíveis apenas na transformação AWS::LanguageExtensions são Fn::Length e Fn::ToJsonString. Use referências explícitas a essas funções. Por exemplo, use Fn::Length em vez de !Length.

  • Se você estiver usando várias transformações, use um formato de lista. Se você estiver usando macros personalizadas, posicione as transformações fornecidas pela AWS depois das macros personalizadas. Se você estiver usando ambas as transformações AWS::LanguageExtensions e AWS::Serverless, a transformação AWS::LanguageExtensions deve vir antes da transformação AWS::Serverless na lista.

  • Funções e atributos fornecidos pela transformação AWS::LanguageExtensions só são compatíveis com as seções Resources, Conditions e Outputs de um modelo.

Para obter mais informações sobre o uso de macros, consulte Criar uma definição de macro do CloudFormation.

Exemplo

O exemplo a seguir mostra como usar a transformação AWS::LanguageExtensions para usar a função intrínseca Fn::Length definida pela transformação.

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