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 deUpdateStack
. 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çãoAWS::LanguageExtensions
sãoFn::Length
eFn::ToJsonString
. Use referências explícitas a essas funções. Por exemplo, useFn::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
eAWS::Serverless
, a transformaçãoAWS::LanguageExtensions
deve vir antes da transformaçãoAWS::Serverless
na lista. -
Funções e atributos fornecidos pela transformação
AWS::LanguageExtensions
só são compatíveis com as seçõesResources
,Conditions
eOutputs
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