Como referenciar um recurso em outra pilha a partir de um modelo do CloudFormation?
Ao criar um modelo no AWS CloudFormation, quero referenciar um recurso em outra pilha do CloudFormation.
Resolução
Para referenciar um recurso em outra pilha do CloudFormation, você deve primeiro criar referências entre pilhas. A resolução a seguir fornece um exemplo de um método para criar uma referência entre pilhas. O exemplo de pilha NetworkStack cria os recursos e exportações relacionados à rede ${AWS::StackName}-SecurityGroupID e ${AWS::StackName}-SubnetID. Após a criação da pilha, o CloudFormation substitui ${AWS::StackName} pelo NetworkStack. Os nomes finais de exportação são NetworkStack-SecurityGroupID e NetworkStack-SubnetID.
Criar uma pilha para exportar valores de saída
Conclua as seguintes etapas:
- Crie uma pilha do CloudFormation e use o modelo SampleNetworkCrossStack .
Observação: você deve declarar o campo Exportar na seção Saídas do modelo. - Nomeie a pilha NetworkStack.
Observação: NetworkStack exporta os valores da sub-rede e do grupo de segurança.
Use uma sub-rede e um grupo de segurança importados para criar uma instância do Amazon EC2
As propriedades da instância Amazon Elastic Compute Cloud (Amazon EC2), como SubnetId e SecurityGroupId, usam os valores da pilha de exportação. Para importar os valores, use a função intrínseca Fn::ImportValue.
Observação: a pilha de importação e exportação deve estar na mesma região da AWS e na mesma conta da AWS. Além disso, os nomes dos valores exportados devem ser exclusivos para sua região e conta.
Antes de criar a instância do EC2, conclua as seguintes etapas:
- Abra o console do CloudFormation.
- Escolha Criar pilha e, em seguida, escolha Modelo de design.
- Escolha a guia Parâmetros do editor de código e, em seguida, escolha Modelo.
- Para usar os valores da pilha de exportação para criar a instância, insira o seguinte modelo no editor de código:
Importante: defina a pilha de recursos NetworkStack como o valor para NetworkStackParameter. O valor NetworkStack substitui o nome correto da pilha nas funções Fn::ImportValue correspondentes.
Observação: substitua t2.micro pelo seu tipo de instância e ami-a1b23456 pelo seu ID Amazon Machine Image (AMI).{ "Parameters": { "NetworkStackParameter": { "Type": "String" } }, "Resources": { "WebServerInstance": { "Type": "AWS::EC2::Instance", "Properties": { "InstanceType": "t2.micro", "ImageId": "ami-a1b23456", "NetworkInterfaces": [ { "GroupSet": [ { "Fn::ImportValue": { "Fn::Sub": "${NetworkStackParameter}-SecurityGroupID" } } ], "AssociatePublicIpAddress": "true", "DeviceIndex": "0", "DeleteOnTermination": "true", "SubnetId": { "Fn::ImportValue": { "Fn::Sub": "${NetworkStackParameter}-SubnetID" } } } ] } } } }
- Escolha Criar pilha (ícone de nuvem com seta para cima) e, em seguida, escolha Avançar.
- Em Nome da pilha, insira um nome para sua pilha.
- Em Parâmetros, insira o nome da pilha de rede à qual deseja fazer referência cruzada, por exemplo NetworkStack.
- Escolha Avançar e, em seguida, escolha Avançar novamente.
- Escolha Criar.
- Depois que o status da pilha mudar para CREATE_COMPLETE, abra o console do Amazon EC2.
- No painel de navegação, escolha Instâncias e, em seguida, selecione a instância que você criou.
- Escolha a guia Descrição e, em seguida, verifique se o grupo de segurança e a sub-rede estão configurados.
Importante: enquanto outra pilha está importando esses valores ou os valores de exportação da pila de origem, você não pode excluir esses valores. Para atualizar os valores de exportação da pilha de origem, primeiro substitua manualmente os valores nas pilhas que estão importando os valores de exportação da pilha de origem. Em seguida, você pode atualizar os valores de exportação da pilha de origem.
Para listar todas as pilhas que estão importando um valor de saída exportado, execute o comando list-imports. Para listar todas as exportações em uma região, use o console do CloudFormation ou execute o comando list-exports. O nome da exportação deve ser exclusivo para a conta por região.
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Informações relacionadas
Consulte as saídas de recursos em outra pilha do CloudFormation
Vídeos relacionados
Conteúdo relevante
- AWS OFICIALAtualizada há 3 anos
- AWS OFICIALAtualizada há 3 anos