将 Terraform 资源导入本地块
Importing terraform resources into a local block
我有一个项目,在 AWS 中有许多我们需要管理的 SQS 队列。
我需要将这些队列导入到我的 terraform 代码中,但由于它们已经被使用,我无法销毁并重新创建它们。
因为我们有很多队列,所以我们使用 locals
块而不是它的 resource
块来定义它的一些参数,例如 name
、delay_seconds
和其他。 (这是因为我们不想添加超过 10 个 resource
块来将队列导入其中并且有 100 多行代码)
下面是我们用来创建它们的示例代码:
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
}
这又会像往常一样创建以下队列:test-import-terraform-01
和 test-import-terraform-02
。
查询我的状态文件,我可以看到定义如下:
aws_sqs_queue.queue["test-01"]
aws_sqs_queue.queue["test-02"]
基于此,我想将两个现有队列导入我的代码:test-import-terraform-03
和 test-import-terraform-04
。
我考虑过将这两张地图添加到我的 locals
块中:
test-03 = {
name = "test-import-terraform-03"
delay_seconds = 30
}
test-04 = {
name = "test-import-terraform-04"
delay_seconds = 30
}
但是当我尝试导入它们时,两个队列都出现以下错误:
$ 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]
这样的事情可行吗?
您的问题与 Terraform 无关,而是与 shell 扩展有关(请注意错误消息来自 zsh
)。
尝试正确引用您的 shell 参数:
terraform import 'aws_sqs_queue.queue["test-03"]' 'https://sqs.us-east-2.amazonaws.com/12345678910/test-import-terraform-03'
我有一个项目,在 AWS 中有许多我们需要管理的 SQS 队列。 我需要将这些队列导入到我的 terraform 代码中,但由于它们已经被使用,我无法销毁并重新创建它们。
因为我们有很多队列,所以我们使用 locals
块而不是它的 resource
块来定义它的一些参数,例如 name
、delay_seconds
和其他。 (这是因为我们不想添加超过 10 个 resource
块来将队列导入其中并且有 100 多行代码)
下面是我们用来创建它们的示例代码:
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
}
这又会像往常一样创建以下队列:test-import-terraform-01
和 test-import-terraform-02
。
查询我的状态文件,我可以看到定义如下:
aws_sqs_queue.queue["test-01"]
aws_sqs_queue.queue["test-02"]
基于此,我想将两个现有队列导入我的代码:test-import-terraform-03
和 test-import-terraform-04
。
我考虑过将这两张地图添加到我的 locals
块中:
test-03 = {
name = "test-import-terraform-03"
delay_seconds = 30
}
test-04 = {
name = "test-import-terraform-04"
delay_seconds = 30
}
但是当我尝试导入它们时,两个队列都出现以下错误:
$ 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]
这样的事情可行吗?
您的问题与 Terraform 无关,而是与 shell 扩展有关(请注意错误消息来自 zsh
)。
尝试正确引用您的 shell 参数:
terraform import 'aws_sqs_queue.queue["test-03"]' 'https://sqs.us-east-2.amazonaws.com/12345678910/test-import-terraform-03'