hashicorp / terraform

Terraform enables you to safely and predictably create, change, and improve infrastructure. It is a source-available tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.
https://www.terraform.io/
Other
42.73k stars 9.55k forks source link

Import a S3 Bucket from a different region of my global provider #13750

Closed nilo closed 7 years ago

nilo commented 7 years ago

Hi there, The problem: I have an S3 Bucket with my states on ca-central-1 and all my other infra are on us-east-2. I never created anything on us-east-2 when I ran terraform apply I can't create a Bucket resource on ca-central-1 that already exists, so I need to import it using something like: terraform import aws_s3_bucket.bucket states-terraform-stage. When I do this I get this error:

Error importing: 1 error(s) occurred:

* aws_s3_bucket.bucket (import id: states-terraform-stage): import aws_s3_bucket.bucket (id: states-terraform-stage): Error importing AWS S3 bucket policy: BucketRegionError: incorrect region, the bucket is not in 'us-east-2' region
        status code: 301, request id: , host id:

Terraform is trying to import the resource from us-east-2 and not from ca-central-1. A -region= option should resolve the problem.

Terraform Version

0.9.3

Affected Resource(s)

Expected Behavior

import an s3 bucket from another region.

Actual Behavior

It is trying to import a bucket from the same region of the provider.

Steps to Reproduce

  1. Create an S3 bucket on ca-central-1 using AWS console eg: states-tr
  2. Create a S3 bucket config aws_s3_bucket with the provider point to ca-central-1 with the same name
  3. Create all you infra on us-east-2
  4. Try to import it using: terraform import aws_s3_bucket.bucket states-tr
grubernaut commented 7 years ago

Hey @nilo, thanks for the issue!

If you specify the correct provider for the ca-central-1 region does the import work? ie:

$ terraform import -provider=ca-central-provider aws_s3_bucket.bucket states-tr
nilo commented 7 years ago

That's what I was looking for @grubernaut thanks!

ILMostro commented 7 years ago

Is there a minimum version of terraform where this works? I keep getting errors still on v.0.8.8

Laxman-SM commented 6 years ago

i am using latest version of terraform with s3 backend KMS and server side encryption and this work fine for me. Terraform v0.11.6 terraform import -provider=aws aws_s3_bucket.bucket_tfstates tfstates-dockerswarm-1

Acquiring state lock. This may take a few moments... aws_s3_bucket.bucket_tfstates: Importing from ID "tfstates-dockerswarm-1"... aws_s3_bucket.bucket_tfstates: Import complete! Imported aws_s3_bucket (ID: tfstates-dockerswarm-1) Imported aws_s3_bucket_policy (ID: tfstates-dockerswarm-1) aws_s3_bucket.bucket_tfstates: Refreshing state... (ID: tfstates-dockerswarm-1) aws_s3_bucket_policy.bucket_tfstates: Refreshing state... (ID: tfstates-dockerswarm-1)

Import successful!

The resources that were imported are shown above. These resources are now in your Terraform state and will henceforth be managed by Terraform.

Releasing state lock. This may take a few moments...

ghost commented 4 years ago

I'm going to lock this issue because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues.

If you have found a problem that seems similar to this, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.