Obter resultados exportados de uma pilha do CloudFormation implantada - AWS CloudFormation

Obter resultados exportados de uma pilha do CloudFormation implantada

Quando você tem várias pilhas na mesma região e Conta da AWS, talvez queira compartilhar informações entre elas. Útil quando uma pilha precisa usar recursos criados por outra pilha.

Por exemplo, você pode ter uma pilha que cria recursos de rede, como sub-redes e grupos de segurança, para servidores Web. Outras pilhas que criam os servidores Web reais podem então usar os recursos de rede criados pela primeira pilha. Você não precisa codificar IDs de recurso no modelo da pilha ou passar IDs como parâmetros de entrada.

Para compartilhar informações entre pilhas, exporte valores de saída de uma pilha e importe-os para outra pilha. Como isso funciona:

  1. No modelo da primeira pilha (por exemplo, a pilha de rede), você define determinados valores para exportação usando o campo Export na seção Outputs. Para ter mais informações, consulte Referência de sintaxe de seção Outputs para modelos do CloudFormation.

  2. Quando você criar ou atualizar essa pilha, o CloudFormation exportará os valores de saída, disponibilizando-os para outras pilhas na mesma região e Conta da AWS.

  3. No modelo da outra pilha, você usa a função Fn::ImportValue para importar os valores exportados da primeira pilha.

  4. Quando você criar ou atualizar a segunda pilha (por exemplo, a pilha do servidor web), o CloudFormation recuperará automaticamente os valores exportados da primeira pilha e os usará.

Para um passo a passo e modelos de amostra, consulte Consultar saídas de recurso em outra pilha do CloudFormation.

Exportar valores de saída da pilha vs usar pilhas aninhadas

Pilha aninhada é uma pilha que você cria dentro de outra pilha usando o recurso AWS::CloudFormation::Stack. Com pilhas aninhadas, você implanta e gerencia todos os recursos em uma única pilha. É possível usar saídas de uma pilha no grupo de pilhas aninhadas como entradas para outra pilha no grupo. Isso é diferente de exportar valores.

Caso você queira isolar o compartilhamento de informações dentro de um grupo de pilhas aninhadas, sugerimos usar pilhas aninhadas. Para compartilhar informações com outras pilhas (e não apenas dentro do grupo de pilhas aninhadas), exporte os valores. Por exemplo, você pode criar uma única pilha com uma sub-rede e exportar o ID. Outras pilhas podem usar essa sub-rede importando o ID. Não é necessário que cada pilha crie a própria sub-rede. Como as pilhas estão importando o ID de sub-rede, não é possível alterar nem excluí-lo.

Para saber mais sobre pilhas aninhadas, consulte Incorporar pilhas em outras pilhas usando pilhas aninhadas.

Considerações

As restrições a seguir se aplicam a referências de pilha cruzada.

  • Para cada Conta da AWS, os nomes de Export devem ser exclusivos em uma região.

  • Não é possível criar referências entre pilhas nas diversas regiões. Você pode usar a função intrínseca Fn::ImportValue para importar somente valores que foram exportados na mesma região.

  • Para saídas, o valor da propriedade Name de uma Export não pode utilizar funções Ref ou GetAtt que dependem de um recurso.

    Da mesma forma, a função ImportValue não pode incluir funções Ref ou GetAtt que dependem de um recurso.

  • Depois que outra pilha importar um valor de saída, não será possível excluir a pilha que está exportando o valor de saída ou modificar o valor de saída exportado. Todas as importações deverão ser removidas para que você possa excluir a pilha de exportação ou modificar o valor de saída.

Listar valores de saída exportados

Se você precisar consultar os valores de saída exportados de suas pilhas, use um dos seguintes métodos:

Para listar valores de saída exportados (console)
  1. Abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation.

  2. Na barra de navegação na parte superior da tela, escolha sua Região da AWS.

  3. No painel de navegação esquerdo, escolha Exportações.

Para listar valores de saída exportados (AWS CLI)

Use o seguinte comando list-exports: Substitua us-east-1 por sua Região da AWS.

aws cloudformation list-exports --region us-east-1

O seguinte é um exemplo de saída.

{ "Exports": [ { "ExportingStackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/private-vpc/99764070-b56c-xmpl-bee8-062a88d1d800", "Name": "private-vpc-subnet-a", "Value": "subnet-07b410xmplddcfa03" }, { "ExportingStackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/private-vpc/99764070-b56c-xmpl-bee8-062a88d1d800", "Name": "private-vpc-subnet-b", "Value": "subnet-075ed3xmplebd2fb1" }, { "ExportingStackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/private-vpc/99764070-b56c-xmpl-bee8-062a88d1d800", "Name": "private-vpc-vpcid", "Value": "vpc-011d7xmpl100e9841" } ] }

O CloudFormation mostra os nomes e os valores das saídas exportadas da região atual e a pilha da qual elas foram exportadas. Para fazer referência a um valor de saída exportado em outro modelo de pilha, use o nome de exportação e a função Fn::ImportValue.

Listar pilhas que importam um valor de saída exportado

Para excluir ou alterar os valores de saída exportados, primeiro é necessário descobrir quais pilhas os estão importando.

Para ver as pilhas que importam um valor de saída exportado, use um dos seguintes métodos:

Para listar pilhas que importam um valor de saída exportado (console)
  1. Abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation.

  2. No painel de navegação esquerdo, escolha Exportações.

  3. Para verificar quais pilhas importam um determinado valor de exportação, escolha Export Name (Nome da exportação) para esse valor de exportação. O CloudFormation mostra a página de detalhes da exportação, que lista todas as pilhas que estão importando esse valor.

Para listar pilhas que importam um valor de saída exportado (AWS CLI)

Use o comando list-imports. Substitua us-east-1 por sua Região da AWS e private-vpc-vpcid pelo nome do valor de saída exportado.

aws cloudformation list-imports --region us-east-1 \ --export-name private-vpc-vpcid

O CloudFormation retorna uma lista de pilhas que estão importando o valor.

{ "Imports": [ "my-app-stack" ] }

Assim que souber quais pilhas estão importando um valor exportado específico, você precisará modificar essas pilhas para remover as funções Fn::ImportValue que fazem referência aos valores de saída. Você deve remover todas as importações que fazem referência a valores de saída exportados para poder excluir ou modificar os valores de saída exportados.