Спасибо, Рик. оно работает. Итак, в итоге, если мне нужно изменить существующий vpc (который создается вручную) с помощью terraform, я должен сначала импортировать, но если я хочу создать новые компоненты из существующего vpc, я буду использовать второе решение, которое вы опубликовали. Спасибо.

ужно создать несколько новых EC2, RDS и т. Д. С использованием Terraform в существующем AWS VPC. и существующая подсеть, группа безопасности, iam и т. д. они не созданы Terraform. это создано вручную.

Я слышал, правильный путь - использовать импорт terraform (это правильно?). Чтобы проверить, как работает импорт terraform, я сначала проверил, как импортировать существующий EC2 вместо существующего VPC, потому что я не хочу ничего случайно менять в существующем VPC.

перед запуском

terraform import aws_instance.example i-XXXXXXXXXX

Похоже, мне нужно создать очень подробный ресурс EC2 в моем файле ec2.tf, например:

resource "aws_instance" "example" {
  iam_instance_profile = XXXXXXXXXX
  instance_type = XXXXXXX
  ami = XXXXXXX
  tags {
    Name = XXXXX
    Department = XXXX
    ....
  }
} 

если я просто напишу:

resource "aws_instance" "example" {
}

это показало, что я пропустил ами и тип экземпляра,

если я напишу:

resource "aws_instance" "example" {
  instance_type = XXXXXXX
  ami = XXXXXXX
}

тогда запуск "terraform apply" изменит теги моего существующего EC2 на ничто, изменит профиль iam на ничто.

Я еще не пробовал, как импортировать существующий vpc, подсеть, группу безопасности. Я боюсь, если я попытаюсь, я должен поместить много информации о существующем vpc, подсети, группе безопасности и т. Д. Моя система сложна.

Ожидается ли, что мне нужно указать так много деталей в моем коде Terraform? разве нет способа, чтобы я просто указал идентификатор существующего материала, например идентификатор vpc, и мой новый материал будет создан на основе существующего идентификатора? СТГ. любить:

data "aws_subnet" "public" {
    id = XXXXXXX
}

resource "aws_instance" "example" {
  instance_type = "t2.micro"
  ami = "${var.master_ami}"
  ......
  subnet_id = "${aws_subnet.public.id}"
}

Ответы на вопрос(1)

Ваш ответ на вопрос