terraform可以仅用于在不同AWS区域中创建资源吗?

时间:2018-12-30 21:01:41

标签: amazon-web-services terraform aws-regions

我有以下deploy.tf文件:

provider "aws" {
  region          = "us-east-1"
}

provider "aws" {
  alias           = "us_west_1"
  region          = "us-west-2"
}

resource "aws_us_east_1" "my_test" {
  # provider        = "aws.us_east_1"
  count           = 1
  ami             = "ami-0820..."
  instance_type   = "t2.micro"
}

resource "aws_us_west_1" "my_test" {
  provider        = "aws.us_west_1"
  count           = 1
  ami             = "ami-0d74..."
  instance_type   = "t2.micro"
}

我正在尝试使用它来部署2台服务器,每个区域中一台。我不断收到类似这样的错误:

aws_us_east_1.narc_test: Provider doesn't support resource: aws_us_east_1

我尝试为两个提供者块设置别名,并以多种不同方式引用正确的区域。我已经阅读了多区域支持,并且一些答案表明可以使用模块来完成此操作,但是,这是一个简单的测试,并且我想使其保持简单。目前可以吗?

1 个答案:

答案 0 :(得分:1)

是的,即使在一个文件中,它也可以用于在不同区域中创建资源。无需在测试场景中使用模块。

您的错误可能是由错字引起的。如果要启动ec2实例,则要创建的资源是aws_instance,而不是aws_us_west_1aws_us_east_1

当然,Terraform不知道这种资源,因为它根本不存在。将其更改为aws_instance,您应该就可以了!另外,您可能应该使用不同的名称来命名,以避免对两个资源都使用my_test进行重复命名。