Je suis nouveau dans les modèles CloudFormation. J'ai un modèle de base en yaml qui crée une instance EC2. Chaque fois que je crée une pile et que j'utilise ce modèle, l'instance EC2 est TOUJOURS créée dans la région US East N. Virginia. J'essaie de changer cela afin que l'instance EC2 réside dans la région US-WEST-2. Après quelques recherches, il semble que ce soit quelque chose qui n'est pas spécifié dans le modèle. Au lieu de cela, je dois changer la région en us-west-2 dans la console AWS, puis créer une nouvelle pile. Ma compréhension est-elle correcte?
3 Réponses :
Malheureusement, vous ne pouvez pas spécifier la région dans un modèle cloudformation.
Vous devez soit passer region comme argument de ligne de commande
[default] region=eu-west-1
, soit spécifier la valeur par défaut région dans le fichier de configuration aws cli ~/.aws/config
aws --region eu-west-1 cloudformation create-stack --stack-name ...
Que me manque-t-il ici? Je suis sûr que nous pouvons spécifier la région où la pile est créée dans le modèle CFN à l'aide de paramètres et nous avons des modèles actifs qui créent notre pile dans la région respective en fonction de la valeur du paramètre. Le pseudo paramètre AWS :: Region est une valeur qu'AWS CloudFormation résout en tant que région dans laquelle la pile est créée. https://docs.aws.amazon.com/AWSCloudFormation/ latest / UserGuide / gettingstarted.templatebasics.html
Voici une sous-section d'exemple de modèle
{ "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" } ] } } } }
Si vous parvenez à diviser votre modèle en plusieurs parties, vous pouvez le déployer dans différentes régions à la fois via une orchestration et StackSets .
Oui, les ressources sont créées dans la région que vous avez sélectionnée dans la console Web. C'est toujours comme ça. Lorsque vous utilisez l'interface de ligne de commande, vous pouvez passer un paramètre
--region
pour définir la région souhaitée.