简体   繁体   中英

Importing terraform resources into a local block

I have a project that has many SQS queues in AWS that we need to manage. I need to import those queues into my terraform code, but since they're already being used, I can't destroy and recreate them.

Since we have many queues, we use a locals block instead of its resource block to define some of its arguments, such as name , delay_seconds and others. (this is because we don't want to add over 10 resource blocks to import the queues into them and have 100+ lines of code)

Below, example code that we use to create them:

provider "aws" {
  region = "us-east-2"
}

locals {
  sqs_queues = {
    test-01 = {
      name          = "test-import-terraform-01"
      delay_seconds = 30
    }
    test-02 = {
      name          = "test-import-terraform-02"
      delay_seconds = 30
    }
  }
}

resource "aws_sqs_queue" "queue" {
  for_each      = local.sqs_queues
  name          = each.value.name
  delay_seconds = each.value.delay_seconds
}

This in turn will create the following queues: test-import-terraform-01 and test-import-terraform-02 as usual. Querying my statefile, i can see then defined as such:

aws_sqs_queue.queue["test-01"]
aws_sqs_queue.queue["test-02"]

Based on that, i would like to import two existing queues to my code: test-import-terraform-03 and test-import-terraform-04 . I thought about adding these two maps to my locals block:

test-03 = {
  name          = "test-import-terraform-03"
  delay_seconds = 30
}
test-04 = {
  name          = "test-import-terraform-04"
  delay_seconds = 30
}

But when I try to import them, I get the following error for either queues:

$ terraform import aws_sqs_queue.queue["test-03"] https://sqs.us-east-2.amazonaws.com/12345678910/test-import-terraform-03
zsh: no matches found: aws_sqs_queue.queue[test-03]

Is doing something like that possible?

Your problem is not to do with Terraform, but with shell expansion (note the error message comes from zsh ).

Try quoting your shell arguments properly:

terraform import 'aws_sqs_queue.queue["test-03"]' 'https://sqs.us-east-2.amazonaws.com/12345678910/test-import-terraform-03'

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM