【发布时间】:2021-10-28 13:18:15
【问题描述】:
无法解决问题并希望在此处由社区运行它。它可能是直截了当的,我正在努力寻找答案。
我正在创建 KMS 密钥、S3 存储桶、KMS 别名。
我正在使用本地映射来使用其他变量建立一些变量,因此 variables.tf 并不适合。我的主要问题是 ?????下面。
如何将一个资源映射到另一个资源中的特定返回值?因此,例如,某些存储桶上只会使用某些密钥。我将如何在资源中创建一个检查,以便仅为其创建的每个存储桶分配一个我想要的 KMS 密钥。
locals {
buckets = {
"1" = {
name = "1",
kms_key = false
},
"2" = {
name = "2",
kms_key = false
},
"3" = {
name = "3",
kms_key = false
},
"4" = {
name = "4",
kms_key = false
},
"5" = {
name = "5",
kms_key = false
},
"6" = {
name = "6",
kms_key = false
}
}
keys = {
"1" = {
description = "1"
alias = "alias/1-key"
},
"il5" = {
description = "2"
alias = "alias/2-key"
},
"ebs" = {
description = "3"
alias = "alias/3-key"
}
}
}
resource "aws_kms_key" "key" {
for_each = local.keys
description = each.value.description
enable_key_rotation = true
deletion_window_in_days = 30
}
resource "aws_kms_alias" "this" {
for_each = local.keys
name = each.value.alias
target_key_id = ??????
}
resource "aws_s3_bucket" "bucket" {
for_each = local.buckets
bucket = each.value.name
acl = "private"
server_side_encryption_configuration {
rule {
apply_server_side_encryption_by_default {
sse_algorithm = "aws:kms"
kms_master_key_id = ??????
}
}
}
我在想这样的事情吗?是的,我得到语法是无效的,只是在没有完全理解如何做的情况下给出我想要完成的想法。
server_side_encryption_configuration {
rule {
apply_server_side_encryption_by_default {
sse_algorithm = "aws:kms"
kms_master_key_id = {
if this bucket = this key,
if this bucket = this key,
if this bucket = this key,
etc
}
}
}
}
任何帮助都会很棒。
【问题讨论】:
标签: amazon-web-services amazon-s3 terraform infrastructure-as-code