【发布时间】:2022-01-14 17:50:18
【问题描述】:
我定义了以下变量:
variable "animals" {
description = "Animal S3 buckets"
default = {
cat = {
name = "cat-logs",
description = "Logs for cat bucket"
},
dog = {
name = "config-logs",
description = "Logs for dog bucket"
},
mouse = {
name = "mouse-logs",
description = "Logs for mouse bucket"
},
fish = {
name = "fish-logs",
description = "Logs for fish bucket"
}
}
#Queue
resource "aws_sqs_queue" "animal_queues" {
for_each = var.animals
name = "${each.value.name}"
redrive_policy = jsonencode({
deadLetterTargetArn = aws_sqs_queue.s3_replication_dl[each.key].arn
maxReceiveCount = 50
})
}
#DL Queue
resource "aws_sqs_queue" "animal_dl" {
for_each = var.animals
name = "${each.value.name}-dl"
}
我会说,当变量中只有“cat”和“dog”时,我已经成功运行了这个。目前,猫和狗有一个sqs队列。从那时起,我添加了两个新元素:“鼠标”和“鱼”
现在运行代码时,无论是尝试应用还是销毁,都会出现如下错误:
Error: Invalid index
on main.tf line 303, in resource "aws_sqs_queue" "animal_queues":
303: deadLetterTargetArn = aws_sqs_queue.animal_dl[each.key].arn
|----------------
| aws_sqs_queue.animal_dl is object with 2 attributes
| each.key is "mouse"
| each.key is "fish"
The given key does not identify an element in this collection value.
不确定这里出了什么问题,因为它以前工作过。非常感谢任何指导。
【问题讨论】: