代码之家  ›  专栏  ›  技术社区  ›  Sai

如何指示AWS CloudInformation模板在特定区域中创建资源?

  •  2
  • Sai  · 技术社区  · 7 年前

    我不熟悉CloudInformation模板。我在yaml中有创建EC2实例的基本模板。每次我创建一个堆栈并使用这个模板时,EC2实例总是在美国东弗吉尼亚地区创建的。我正在尝试更改此设置,以便EC2实例驻留在US-WEST-2区域中。经过一些研究,似乎这是模板中未指定的内容。相反,我需要在AWS控制台中将该区域更改为US-WEST-2,然后创建一个新的堆栈。我的理解正确吗?

    2 回复  |  直到 7 年前
        1
  •  4
  •   Dzmitry Bahdanovich    7 年前

    不幸的是,您不能在cloudformation模板中指定区域。

    您应该将region作为命令行参数传递

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

    或者,在aws cli配置文件中指定默认区域 ~/.aws/config

    [default]
    region=eu-west-1
    
        2
  •  0
  •   Sushant Sonker    7 年前

    我这里缺什么?我确信我们可以使用参数指定在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"
              }
            ]
          }
        }
      }
    }
    
    推荐文章