Transformação AWS::LanguageExtensions - AWS CloudFormation

Este é o novo Guia de referência de modelos do AWS CloudFormation. Atualize seus favoritos e links. Para obter ajuda para começar a usar o CloudFormation, consulte o Guia do usuário do AWS CloudFormation.

Transformação AWS::LanguageExtensions

Este tópico descreve como usar a transformação AWS::LanguageExtensions para habilitar funções e recursos adicionais que não estão disponíveis por padrão.

AWS::LanguageExtensions é uma macro do CloudFormation que, quando referenciada no seu modelo de pilha, atualiza qualquer função intrínseca definida pela transformação para seu valor resolvido dentro do modelo quando você cria ou atualiza uma pilha usando um conjunto de alterações.

Ao incluir essa transformação em seu modelo do CloudFormation, você pode acessar recursos adicionais, como Fn::ForEach, o qual permite operações mais avançadas, como iterações. Você também pode usar funções intrínsecas em locais onde elas normalmente não são permitidas, como nas funções Ref e Fn::GetAtt.

Uso

Para usar a transformação AWS::LanguageExtensions, é necessário declará-la no nível superior do seu modelo do CloudFormation. Não é possível usar AWS::LanguageExtensions como uma transformação incorporada em nenhuma outra seção de modelo.

A declaração deve usar a string literal AWS::LanguageExtensions como seu valor. Você não pode usar um parâmetro ou uma função para especificar um valor de transformação.

Sintaxe

Para declarar essa transformação no modelo do CloudFormation, use a seguinte sintaxe:

JSON

{ "Transform":"AWS::LanguageExtensions", "Resources":{ ... } }

YAML

Transform: AWS::LanguageExtensions Resources: ...

A transformação AWS::LanguageExtensions é uma declaração independente sem parâmetros adicionais.

Suporte para funções adicionais

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

Considerações

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

  • Ao atualizar uma pilha que usa a transformação AWS::LanguageExtensions, recomendamos que você não use a opção Usar modelo existente no console do CloudFormation ou a opção de linha de comando equivalente --use-previous-template. A transformação AWS::LanguageExtensions resolve os parâmetros em valores literais durante o processamento. Quando você usa --use-previous-template, o CloudFormation usa esse modelo processado com os valores literais antigos, impedindo que novos valores de parâmetros e atualizações de parâmetros do Systems Manager sejam aplicados. Em vez disso, forneça o modelo original para garantir que os parâmetros sejam resolvidos novamente com os valores atuais.

  • 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. Use referências explícitas a essas funções. Por exemplo, use Fn::Length em vez de !Length.

  • No momento, a CLI do AWS SAM não oferece suporte à função intrínseca Fn::ForEach da transformação AWS::LanguageExtensions.

  • 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.

  • As funções e os atributos fornecidos pela transformação AWS::LanguageExtensions só são compatíveis com as seções Resources, Conditions e Outputs do seu modelo.

Exemplos

Os exemplos a seguir mostram 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

Para obter mais exemplos, consulte os tópicos a seguir.

Para obter mais informações sobre o uso de macros, consulte Executar processamento personalizado em modelos do CloudFormation com macros de modelo no Guia do usuário do AWS CloudFormation.