簡體   English   中英

使用 Terraform 在多個子網中創建 EC2 實例

[英]Creating EC2 instances in multiple subnets with Terraform using for each

我目前在一個 VPC 中為一個區域內的每個可用區創建了多個子網。 我現在嘗試在每個可用區內為每個子網創建一個 EC2 實例,但遇到了問題。 下面是我的代碼,我在獲取要附加到 EC2 實例的子網 ID 時遇到了一些問題。 任何意見,將不勝感激。

實例

resource "aws_instance" "public" {
  for_each      = aws_subnet.public
  ami           = data.aws_ami.ec2.id
  instance_type = var.tableau_instance
  key_name      = aws_key_pair.main.key_name
  subnet_id     = [for subnet in aws_subnet.public : subnet.id]
}

子網

locals {
  az_names = data.aws_availability_zones.azs.names
}

resource "aws_subnet" "public" {
  for_each                = { for index, az_name in local.az_names : index => az_name }
  vpc_id                  = aws_vpc.main.id
  cidr_block              = cidrsubnet(var.vpc_cidr, 8, each.key + 1)
  availability_zone       = local.az_names[each.key]
  map_public_ip_on_launch = true
  tags = {
    Name = "${var.vpc_tags}_PubSubnet"
  }
}

錯誤

Error: Incorrect attribute value type

  on vpc.tf line 18, in resource "aws_instance" "public":
  18:   subnet_id     = [for subnet in aws_subnet.public : subnet.id]
    |----------------
    | aws_subnet.public is object with 3 attributes

Inappropriate value for attribute "subnet_id": string required.

實例代碼應該如下:

resource "aws_instance" "public" {
  for_each      = aws_subnet.public
  ami           = data.aws_ami.ec2.id
  instance_type = var.tableau_instance
  key_name      = aws_key_pair.main.key_name
  subnet_id     = each.value.id
}

這將在每個子網中放置 1 個實例。

暫無
暫無

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

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