Ich bin neu in CloudFormation-Vorlagen. Ich habe eine grundlegende Vorlage in yaml, die eine EC2-Instanz erstellt. Jedes Mal, wenn ich einen Stapel erstelle und diese Vorlage verwende, wird die EC2-Instanz IMMER in der Region US East N. Virginia erstellt. Ich versuche dies so zu ändern, dass sich die EC2-Instanz in der Region US-WEST-2 befindet. Nach einigen Recherchen scheint dies nicht in der Vorlage angegeben zu sein. Stattdessen muss ich die Region in der AWS-Konsole in us-west-2 ändern und dann einen neuen Stapel erstellen. Ist mein Verständnis richtig?

4
Sai 19 Jän. 2019 im 22:43

3 Antworten

Beste Antwort

Leider können Sie die Region nicht in einer Cloudformationsvorlage angeben.

Sie sollten entweder region als Befehlszeilenargument übergeben

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

Oder geben Sie den Standardbereich in der aws cli-Konfigurationsdatei ~/.aws/config an

[default]
region=eu-west-1
5
Dmitry Bogdanovich 19 Jän. 2019 im 20:03

Was fehlt mir hier? Ich bin sicher, wir können die Region angeben, in der der Stapel in der CFN-Vorlage mithilfe von Parametern erstellt wird, und wir haben aktive Vorlagen, die unseren Stapel in der jeweiligen Region basierend auf dem Parameterwert erstellen. Der Pseudoparameter AWS :: Region ist ein Wert, den AWS CloudFormation als die Region auflöst, in der der Stapel erstellt wird. https://docs.aws.amazon.com/AWSCloudFormation/ neueste / UserGuide / Gettingstarted.templatebasics.html

Hier ist ein Unterabschnitt der Beispielvorlage

{
  "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"
          }
        ]
      }
    }
  }
}
1
Sushant Sonker 25 Jän. 2019 im 17:09

Wenn Sie Ihre Vorlage in Teile aufteilen können, können Sie sie über eine Orchestrierung und StackSets.

0
DuckMaestro 31 März 2020 im 02:51