Como faço para passar valores entre pilhas aninhadas dentro da mesma pilha pai no AWS CloudFormation?

2 minuto de leitura
0

Quero passar ou compartilhar um valor entre duas pilhas aninhadas dentro da mesma pilha pai no AWS CloudFormation.

Breve descrição

A resolução pressupõe o seguinte:

  • Você tem duas pilhas aninhadas, NestedStackA e NestedStackB, que fazem parte da mesma pilha pai.
  • Você deseja usar um valor de NestedStackA em NestedStackB.

Resolução

  1. FSPIn em seu modelo do AWS CloudFormation, passe o valor que você deseja compartilhar como saída em sua pilha de origem (NestedStackA). Veja os seguintes exemplos de JSON e YAML.

JSON:

"Outputs": {
    "SharedValueOutput": {
        "Value": "yourValue",
        "Description": "You can refer to any resource from the template."
    }
}

YAML:

Outputs:
  SharedValueOutput:
    Value: yourValue         
    Description: You can refer to any resource from the template.
  1. FSPCreate um parâmetro na pilha de destino (NestedStackB). Veja os seguintes exemplos de JSON e YAML.

JSON:

"Parameters": {
    "SharedValueParameter": {
        "Type": "String",
        "Description": "The shared value will be passed to this parameter by the parent stack."
    }
}

YAML:

Parameters:
  SharedValueParameter:
    Type: String
    Description: The shared value will be passed to this parameter by parent stack.
  1. FSPPass o valor de saída de NestedStackA como o valor do parâmetro para NestedStackB. Para acessar esse valor na pilha pai, use a função Fn::GetAtt. Use o nome lógico de NestedStackA e o nome do valor de saída no formato Outputs.NestedStackOutputName. Veja os seguintes exemplos de JSON e YAML.

JSON:

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
    "NestedStackA": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "TemplateURL": "<S3 URL for the template>"
      }
    },
    "NestedStackB": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "TemplateURL": "<S3 URL for the template>",
        "Parameters": {
          "SharedValueParameter": {
            "Fn::GetAtt": [
              "NestedStackA",
              "Outputs.SharedValueOutput"
            ]
          }
        }
      }
    }
  }
}

YAML:

AWSTemplateFormatVersion: 2010-09-09
Resources:
  NestedStackA:
    Type: 'AWS::CloudFormation::Stack'
    Properties:
      TemplateURL: <S3 URL for the template>
  NestedStackB:
    Type: 'AWS::CloudFormation::Stack'
    Properties:
      TemplateURL: <S3 URL for the template>
      Parameters:
        SharedValueParameter:
          Fn::GetAtt:
          - NestedStackA
          - Outputs.SharedValueOutput

Informações relacionadas

Trabalhar com pilhas aninhadas

AWS::CloudFormation::Stack

Trechos de modelo do AWS CloudFormation

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos