формирование облака aws экспорт вложенных стеков / импорт значений - PullRequest
0 голосов
/ 11 мая 2018

Я создаю вложенные шаблоны формирования облаков для автоматизации инфраструктуры AWS.В основном у меня есть родительская конфигурация, как показано ниже:

"Resources": {
    "VPCStack": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "Parameters": {
                    "ClassB": {                      

                           "Ref": "ClassB"                     

                    }                
                },
          "TemplateURL": "https://s3.us-east-2.amazonaws.com/xxx/vpc.json",
          "TimeoutInMinutes": "5"
      }
    },
    "NatStack": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "Parameters": {
                    "ParentVPCStack": { "Ref": "AWS::StackName" },
                    "SubnetZone": {"Ref": "SubnetZone"}           
                },
          "TemplateURL": "https://s3.us-east-2.amazonaws.com/xxx/nat-gateway.json",
          "TimeoutInMinutes": "5"
      },
      "DependsOn": "VPCStack"
    }
  }

будет запускать вложенный CF, и у меня будут выходные данные экспорта в VPC как следующие

"Outputs": {
                "StackName": {
            "Description": "Stack name.",
            "Value": {
                "Fn::Sub": "${AWS::StackName}"
            }
        },
        "AZs": {
            "Description": "AZs",
            "Value": 2,
            "Export": {
                "Name": {
                    "Fn::Sub": "${AWS::StackName}-AZs"
                }
            }
        },
        "AZA": {
            "Description": "AZ of A",
            "Value": {
                "Fn::Select": [
                    0,
                    {
                        "Fn::GetAZs": ""
                    }
                ]
            },
            "Export": {
                "Name": {
                    "Fn::Sub": "${AWS::StackName}-AZA"
                }
            }
        },
        "AZB": {
            "Description": "AZ of B",
            "Value": {
                "Fn::Select": [
                    1,
                    {
                        "Fn::GetAZs": ""
                    }
                ]
            },
            "Export": {
                "Name": {
                    "Fn::Sub": "${AWS::StackName}-AZB"
                }
            }
        },
        "ClassB": {
            "Description": "Class B.",
            "Value": {
                "Ref": "ClassB"
            },
            "Export": {
                "Name": {
                    "Fn::Sub": "${AWS::StackName}-ClassB"
                }
            }
        },
        "VPC": {
            "Description": "VPC.",
            "Value": {
                "Ref": "VPC"
            },
            "Export": {
                "Name": {
                    "Fn::Sub": "${AWS::StackName}-VPC"
                }
            }
        },
        "SubnetsPublic": {
            "Description": "Subnets public.",
            "Value": {
                "Fn::Join": [
                    ",",
                    [
                        {
                            "Ref": "SubnetAPublic"
                        },
                        {
                            "Ref": "SubnetBPublic"
                        }
                    ]
                ]
            },
            "Export": {
                "Name": {
                    "Fn::Sub": "${AWS::StackName}-SubnetsPublic"
                }
            }
        },
        "SubnetsPrivate": {
            "Description": "Subnets private.",
            "Value": {
                "Fn::Join": [
                    ",",
                    [
                        {
                            "Ref": "SubnetAPrivate"
                        },
                        {
                            "Ref": "SubnetBPrivate"
                        }
                    ]
                ]
            },
            "Export": {
                "Name": {
                    "Fn::Sub": "${AWS::StackName}-SubnetsPrivate"
                }
            }
        },
        "RouteTablePrivate": {
            "Description": "Route table private (deprecated in v4, will be removed in v5).",
            "Value": {
                "Ref": "RouteTablePrivate"
            },
            "Export": {
                "Name": {
                    "Fn::Sub": "${AWS::StackName}-RouteTablePrivate"
                }
            }
        }

, тогда у меня есть шлюз nat, также VPC создает без проблемно при создании шлюза nat я получаю эту ошибку Нет экспорта с именем $ {stack-name} -RouteTableAPrivate найдено

У меня есть эти выходные данные в моем основном CF

"Outputs": {

   "StackRef": {"Value": { "Ref" : "VPCStack"}},

     "Output1FromNestedmyVPCStack" : {

          "Value": { "Fn::GetAtt": [ "VPCStack", "Outputs.RouteTableAPrivate" ] }

      }

   }
}

как я могу решить эту проблему

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Я подозреваю, что это потому, что у вас есть " $ {AWS :: StackName} -RouteTablePrivate" в вашем вложенном стеке.

Вложенные стеки получают сгенерированные имена, о которых вы заранее не узнаете.

Итак, просто назовите его своим ресурсом " RouteTablePrivate ". Все должно быть основано на моей гипотезе.

0 голосов
/ 11 мая 2018

Ваше экспортированное значение не имеет A между RouteTable и Private, где, как указано в указанном вами значении (RouteTableAPrivate)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...