簡體   English   中英

在cloudformation json模板中添加PublicSubnet / PrivateSubnet的正確方法?

[英]Proper way to add PublicSubnet/PrivateSubnet in cloudformation json template?

我試圖在大規模Cloudformation json模板中添加VPC。 這是我在“參數”下添加的:

       "VpcId" : {
            "Description" : "VpcId of your existing Virtual Private Cloud (VPC)",
            "Type" : "String"
        }

這是我在“資源”下添加的內容:

"VPC": {
            "Type": "AWS::EC2::VPC",
            "Properties": {
                "CidrBlock": "172.0.0.0/16",
                "EnableDnsSupport": true,
                "EnableDnsHostnames": true
            }
        },
        "PublicSubnet" : {
          "Type" : "AWS::EC2::Subnet",
          "Properties" : {
            "VpcId" : { "Ref" : "VpcId" },
            "CidrBlock": { "Fn::FindInMap" : [ "SubnetConfig", "Public", "CIDR" ]},
            "Tags": [
              { "Key": "Application", "Value": { "Ref" : "AWS::StackName" } },
              { "Key": "Network", "Value": "Public" }
            ]
          }
        },
            "PrivateSubnet" : {
          "Type" : "AWS::EC2::Subnet",
          "Properties" : {
            "VpcId" : { "Ref" : "VpcId" },
            "CidrBlock" : { "Fn::FindInMap" : [ "SubnetConfig", "Private", "CIDR" ]},
            "Tags" : [
              { "Key" : "Application", "Value" : { "Ref" : "AWS::StackName" } },
              { "Key" : "Network", "Value" : "Private" }
            ]
          }
        }
      }

我得到錯誤:

模板驗證錯誤:模板錯誤:模板的“映射”部分中沒有名為“ SubnetConfig”的映射。

我在AWS文檔中找到的所有內容都與github中的共享示例進行了比較。 我應該在哪里設置Mapping名稱以及在哪里? 還是我應該從錯誤輸出中了解什么? 也許我錯過了一些其他資源?

謝謝!

您正在調用函數"Fn::FindInMap" : [ "SubnetConfig", "Private", "CIDR" ] ,但是在模板的“ Mappings”部分中沒有“ SubnetConfig”。

看一下文檔 有一個示例在模板的“資源”部分旁邊顯示“映射”部分。 在“映射”中,應聲明以下內容:

"Mappings" : {
    ...,
    "SubnetConfig" : {
      "Public" : { "CIDR" : "123.456.789.0/24" },
      "Private" : { "CIDR" : "123.456.789.0/24" },
    }
  },

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM