Cómo lanzar ECs en una VPC existente usando Terraform

Necesito crear varios EC2, RDS, etc. nuevos usando Terraform, en una VPC de AWS existente. y la subred existente, el grupo de seguridad, iam, etc., no son creados por Terraform. Se crea manualmente.

Escuché que la forma correcta es usar la importación de terraformas (¿es correcto?). Para probar cómo funciona la importación de terraformas, primero probé cómo importar un EC2 existente en lugar de una VPC existente, porque no quiero cambiar accidentalmente nada en una VPC existente.

antes de correr

terraform import aws_instance.example i-XXXXXXXXXX

Parece que necesito crear un recurso EC2 muy detallado en mi archivo ec2.tf, como:

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

si solo escribo:

resource "aws_instance" "example" {
}

mostró que extrañaba ami y el tipo de instancia,

si escribo

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

luego ejecutar "terraform apply" cambiará las etiquetas de mi EC2 existente a nada, cambiará el perfil de iam a nada.

Todavía no he probado cómo importar vpc, subred, grupo de seguridad existentes. Me temo que si lo intento, tengo que poner mucha información de la vpc existente, subred, grupo de seguridad, etc. mi sistema es complejo.

¿se espera que necesite indicar tantos detalles en mi código de terraform? ¿No hay una manera de que simplemente indique la identificación de cosas existentes como la identificación de vpc, y mis nuevas cosas se crearán en función de la identificación existente? algo me gusta:

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

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

Respuestas a la pregunta(1)

Su respuesta a la pregunta