Tenemos una infraestructura gestionada con Terraform, pero nuestro código actual no contempla un bucket S3 que ya existe y necesitamos configurar —en este caso, para definir sus reglas de CORS.Si añadimos el recurso directamente en nuestro main.tf
sin más, Terraform detectará que el recurso “no existe” en su estado y querrá crearlo, provocando errores. Por eso, antes debemos importarlo al tfstate
. En este post veremos como con Terraform podemos importar un S3 bucket y hacerlo nuestro!

Escenario
Supongamos que tenemos un bucket example-cdn-static-files
creado manualmente en AWS. Queremos añadirlo a nuestro código Terraform para aplicar cambios de configuración (como CORS o políticas), pero sin perder datos ni interrumpir su funcionamiento. Si lo añadimos directamente al main.tf
sin más, Terraform detectará que el recurso “no existe” en su estado (tfstate
) y querrá crearlo, provocando errores.
1. Añadir el recurso en Terraform
En nuestro main.tf
podemos empezar declarando el recurso:
resource "aws_s3_bucket" "example_cdn_static_files" {
bucket = "example-cdn-static-files"
acl = "private"
}
Pero aún no estará en el estado de Terraform, por lo que debemos importarlo.
2. Importar el bucket al estado
Ejecutamos:
import aws_s3_bucket.example_cdn_static_files example-cdn-static-files
Salida esperada:
Import success! The resources imported are shown above. These are now in your Terraform state.
Import does not currently generate configuration, so you must do this next.
If you do not create configuration for the above resources, then the next `terraform plan` will mark them for destruction.
4. Resumen de pasos
Pues ya estaría, con esta pequeña guía hemos visto como con Terraform podemos importar un S3 bucket
- Declarar el recurso en
main.tf
. - Ejecutar
terraform import
para añadirlo al estado. - Ajustar la configuración (CORS, políticas, etc.).
- Validar con
terraform plan
.
5. Buenas prácticas
- Usar
terraform import
antes de cualquier cambio. - Hacer copia del
tfstate
antes de modificarlo. - Validar con
terraform plan
tras cada import.
Con este proceso, el comando Terraform importar S3 bucket se convierte en una herramienta esencial para integrar recursos existentes y gestionarlos con código, evitando recreaciones y errores.