Transformação AWS::Include - AWS CloudFormation

Transformação AWS::Include

Use a transformação AWS::Include, que é uma macro hospedada pelo AWS CloudFormation, para inserir conteúdo padronizado em seus modelos. A transformação AWS::Include permite criar uma referência para um trecho de transformação em um bucket do Amazon S3. Quando Criar um conjunto de alterações ou Atualizar pilhas do CloudFormation usando conjuntos de alterações e os modelos fazem referência a AWS::Include, o CloudFormation insere o conteúdo do arquivo especificado no local da transformação no modelo. A função AWS::Include comporta-se de forma semelhante a uma diretiva include, copy ou import em linguagens de programação.

Por exemplo, você pode ter uma função do Lambda que pretende reutilizar em um ou mais modelos do CloudFormation.

Uso

Você pode usar a transformação AWS::Include em qualquer lugar do modelo do CloudFormation, exceto na seção de parâmetros do modelo ou no campo de versão do modelo. Por exemplo, use AWS::Include na seção de mapeamentos.

Sintaxe no nível superior de um modelo

Para incluir a transformação AWS::Include no nível superior de um modelo, na seção Transform, use a sintaxe a seguir.

JSON

{ "Transform" : { "Name" : "AWS::Include", "Parameters" : { "Location" : "s3://amzn-s3-demo-bucket/MyFileName.json" } } }

YAML

Transform: Name: 'AWS::Include' Parameters: Location: 's3://amzn-s3-demo-bucket/MyFileName.yaml'

Sintaxe quando a transformação está incorporada em uma seção de um modelo

Para incluir uma transformação que está incorporada em uma seção, use a função intrínseca Fn::Transform e a sintaxe a seguir.

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

Parâmetros

Local

Um local é um URI do Amazon S3, com um nome de arquivo específico em um bucket do S3. Por exemplo, s3://amzn-s3-demo-bucket/MyFile.yaml.

Observações

Ao usar AWS::Include, tenha as seguintes considerações em mente. Para considerações gerais sobre o uso de macros, consulte Considerações ao criar definições de macro do CloudFormation

  • No momento, oferecemos suporte ao URI do Amazon S3, mas não há outro formato do Amazon S3 (como o Nome de região da Amazon (ARN) do Amazon S3). Ele deve ser um bucket do Amazon S3, em vez de algo como um repositório GitHub.

  • Qualquer pessoa com acesso ao URI do Amazon S3 pode incluir o trecho em seu modelo.

  • Os trechos do modelo devem ser em JSON válido.

  • Os trechos do seu modelo devem ser objetos de chave–valor válidos, por exemplo "KeyName": "keyValue".

  • Você não pode usar AWS::Include para fazer referência a um trecho de modelo que também usa AWS::Include.

  • Se os trechos forem alterados, a pilha não selecionará automaticamente essas alterações. Para obter as alterações, atualize a pilha com os trechos atualizados. Se você atualizar a pilha, verifique se os trechos incluídos não foram alterados sem o seu conhecimento. Para confirmar antes de atualizar a pilha, verifique o conjunto de alterações.

  • Ao criar modelos e trechos, você pode combinar linguagens de modelos YAML e JSON.

  • No momento, não oferecemos suporte ao uso de notações abreviadas para trechos YAML.

  • Você pode fornecer um URI do Amazon S3 de replicação entre regiões com o AWS::Include. Verifique os nomes do bucket do Amazon S3 ao acessar objetos de replicação entre regiões. Para obter mais informações, consulte Replicação entre regiões.

Exemplo

O exemplo a seguir mostra como usar a transformação AWS::Include para executar um identificador da condição de espera.

As versões JSON e YAML usam os seguintes trechos de condição de espera. Salve o arquivo como single_wait_condition.yaml e armazene-o em um bucket do S3. Substitua amzn-s3-demo-bucket pelo nome do bucket real.

WebServerWaitHandle: Type: 'AWS::CloudFormation::WaitConditionHandle'

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"