Como posso referenciar um recurso em outra pilha a partir de um modelo do AWS CloudFormation?

4 minuto de leitura
0

Quero referenciar um recurso em outra pilha do AWS CloudFormation ao criar um modelo.

Breve descrição

A resolução a seguir fornece um exemplo de um método para criar uma referência entre pilhas. Para obter instruções adicionais, consulte Passo a passo: Consulte as saídas de recursos em outra pilha do AWS CloudFormation.

Observação: Para referenciar um recurso em outra pilha do AWS CloudFormation, você deve primeiro criar referências entre pilhas. Para criar uma referência entre pilhas, use o campo de exportação para sinalizar o valor de uma saída de recurso para exportação. Em seguida, use a função intrínseca Fn::ImportValue para importar o valor em qualquer pilha dentro da mesma conta e região da AWS. O AWS CloudFormation identifica os valores exportados pelos nomes especificados no modelo. Esses nomes devem ser exclusivos para sua conta e região da AWS.

Resolução

As etapas a seguir mostram como criar uma pilha do AWS CloudFormation chamada NetworkStack. Essa pilha cria recursos e exportações relacionados à rede chamados ${AWS::StackName}-SecurityGroupID e ${AWS::StackName}-SubnetID. ${AWS::StackName} é substituído por NetworkStack após a criação da pilha. Os nomes finais de exportação são NetworkStack-SecurityGroupID e NetworkStack-SubnetID.

Crie uma pilha para exportar valores de saída

1.    Crie uma pilha do AWS CloudFormation usando esse modelo.

2.    Nomeie a pilha NetworkStack.

Observação: NetworkStack exporta os valores da sub-rede e do grupo de segurança.

Criar uma instância do Amazon Elastic Compute Cloud (Amazon EC2) usando uma sub-rede e um grupo de segurança importados

1.    Abra o console do AWS CloudFormation.

2.    Escolha Criar pilha e, em seguida, escolha Modelo de design.

3.    Na guia Parâmetros do editor de código, escolha Modelo.

4.    Copie e cole o modelo a seguir no editor de código e, em seguida, atualize o modelo com os valores apropriados para InstanceType e ImageId:

{
  "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"
              }
            }
          }
        ]
      }
    }
  }
}

Importante: No modelo da etapa 4, use a pilha de recursos NetworkStack como valor para NetworkStackParameter. O valor NetworkStack substitui o nome correto da pilha nas funções Fn::ImportValue correspondentes.

Observação: Para obter exemplos de modelos de importação e exportação, consulte Fn::ImportValue.

5.    Escolha o ícone Criar pilha e, em seguida, escolha Avançar.

6.    Em Nome da pilha, insira um nome para sua pilha.

7.    Em Parâmetros, insira o nome da pilha de rede (NetworkStack) à qual deseja fazer referência cruzada.

8.    Escolha Avançar, escolha Avançar novamente e, em seguida, escolha Criar.

9.    Depois que a criação da pilha estiver concluída, abra o console do Amazon EC2.

10.    No painel de navegação, escolha Instâncias e, em seguida, escolha a instância que você criou com o modelo na etapa 4.

11.    Escolha a exibição Descrição e, em seguida, verifique se o grupo de segurança e a sub-rede estão configurados.

Importante: Você não pode excluir a pilha de origem ou os valores de exportação da pilha de origem enquanto outra pilha está importando esses valores. Para atualizar os valores de exportação da pilha de origem, primeiro substitua manualmente os valores reais 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 da AWS, use o console do AWS CloudFormation ou execute o comando list-exports. O nome da exportação deve ser exclusivo para a conta por região da AWS.

Informações relacionadas

Como uso parâmetros no AWS Systems Manager Parameter Store para compartilhar valores entre pilhas do CloudFormation?

Modelos do AWS CloudFormation

AWS::EC2::Instance

AWS OFICIAL
AWS OFICIALAtualizada há um ano