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:
-
No modelo da primeira pilha (por exemplo, a pilha de rede), você define determinados valores para exportação usando o campo
Export
na seçãoOutputs
. Para ter mais informações, consulte Referência de sintaxe de seção Outputs para modelos do CloudFormation. -
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.
-
No modelo da outra pilha, você usa a função Fn::ImportValue para importar os valores exportados da primeira pilha.
-
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 umaExport
não pode utilizar funçõesRef
ouGetAtt
que dependem de um recurso.Da mesma forma, a função
ImportValue
não pode incluir funçõesRef
ouGetAtt
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)
-
Abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation
. -
Na barra de navegação na parte superior da tela, escolha sua Região da AWS.
-
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)
-
Abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation
. -
No painel de navegação esquerdo, escolha Exportações.
-
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
pelo nome do valor de saída exportado.private-vpc-vpcid
aws cloudformation list-imports --region
us-east-1
\ --export-nameprivate-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.