我已经为我的问题研究了一个可能的解决方案,但似乎我的更具体。
所以,我有一个aws_kms_key
由for_each
表达式创建的资源:
for_each = { for keys in var.parameters : keys.name => keys if local.secrets.init.self == true }
没什么特别的,一切正常,但是我不知道如何使用arn
创建的密钥的输出。这是我的输出:
output "key" {
description = "The 'Amazon Resource Name (ARN)' of 'KMS' key(s)"
value = zipmap(
values(aws_kms_alias.global)[*].name, values(aws_kms_key.global)[*].arn
)
}
我之前使用过for
表达式,但在这种情况下,我必须使用索引来分配arn
kms 键,这显然不是很好甚至是不可接受的做法。这是我的旧输出方式:
output "key" {
description = "The 'Amazon Resource Name (ARN)' of 'KMS' key(s)"
value = [ for key, value in aws_kms_key.global : value.arn ]
}
Usage
flowlog_encryption = [{
keys = element(module.secrets.*.key, 0)[0]
retention = 14
}]
“旧”方式的问题是,创建资源时我只能使用索引访问,当某些事情发生变化时,索引的顺序也在变化,所以当我创建一个键dynamodb
并且flowlogs
dynamodb 获取键flowlogs
时flowlogs
取关键dynamodb
,完全随机的行为。