簡體   English   中英

如何指示 AWS CloudFormation 模板在特定區域創建資源?

[英]How can I instruct an AWS CloudFormation template to create resources in a specific region?

我是 CloudFormation 模板的新手。 我在 yaml 中有創建 EC2 實例的基本模板。 每次我創建堆棧並使用此模板時,EC2 實例總是在美國東部弗吉尼亞北部地區創建。 我正在嘗試更改此設置,以便 EC2 實例位於 US-WEST-2 區域。 經過一些研究,這似乎是模板中未指定的內容。 相反,我需要在 AWS 控制台中將區域更改為 us-west-2,然后創建一個新堆棧。 我的理解正確嗎?

不幸的是,您無法在 cloudformation 模板中指定區域。

您應該將區域作為命令行參數傳遞

aws --region eu-west-1 cloudformation create-stack --stack-name ...

或者,在 aws cli 配置文件~/.aws/config指定默認區域

[default]
region=eu-west-1

我在這里缺少什么? 我確信我們可以使用參數指定在 CFN 模板中創建堆棧的區域,並且我們確實有活動模板,可以根據參數值在相應的區域中創建我們的堆棧。 AWS::Region 偽參數是 AWS CloudFormation 將其解析為堆棧創建區域的值。 https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/gettingstarted.templatebasics.html

這是示例模板的一個子部分

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Parameters": {
    "InstanceType": {
      "Description": "Instance Type",
      "Type": "String",
      "Default": "t2.xlarge"
    },
    "SubnetUSEAST1": {
      "Description": "Subnet on which Ec2 instance needs to be created",
      "Type": "String",
      "Default": "subnet-xxxxxxxx"
    },
    "SubnetUSWEST2": {
      "Description": "Subnet on which Ec2 instance needs to be created",
      "Type": "String",
      "Default": "subnet-yyyyyyyy"
    }
  },
  "Conditions": {
    "useast1": {
      "Fn::Equals": [
        {
          "Ref": "AWS::Region"
        },
        "us-east-1"
      ]
    },
    "uswest2": {
      "Fn::Equals": [
        {
          "Ref": "AWS::Region"
        },
        "us-west-2"
      ]
    }
  },
  "Resources": {
    "EC2Instance": {
      "Type": "AWS::EC2::Instance",
      "Properties": {
        "InstanceType": {
          "Ref": "InstanceType"
        },
        "NetworkInterfaces": [
          {
            "SubnetId": {
              "Fn::If": [
                "useast1",
                {
                  "Ref": "SubnetUSEAST1"
                },
                {
                  "Ref": "SubnetUSWEST2"
                }
              ]
            },
            "AssociatePublicIpAddress": "false",
            "DeviceIndex": "0"
          }
        ]
      }
    }
  }
}

如果您能夠將模板拆分為多個部分,則可以通過一些編排和StackSets一次部署到不同的區域。

暫無
暫無

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

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