Terraform-有条件地合并多个aws_iam_policy_document



对于初学者来说,我读过这个问题,但这个解决方案相当棘手,我希望有了新版本的Terraform,有一种更优雅的方法可以实现这一点。

我有多个IAM政策文件,如下所示:

data "aws_iam_policy_document" "policy1" { 
...
}
data "aws_iam_policy_document" "policy2" { 
...
}
data "aws_iam_policy_document" "policy3" { 
...
}

我正试图用source_policy_documents将它们合并为一个文档,就像这样:

data "aws_iam_policy_document" "combined" {
source_policy_documents = [
data.aws_iam_policy_document.policy1.json
data.aws_iam_policy_document.policy2.json
data.aws_iam_policy_document.policy3.json
]
}

我愿意提供";覆盖";变量,允许用户排除合并到最终策略中的每个文档。

我是Terraform的新手——有没有一种简单的方法可以动态构建source_policy_documents,或者使用override_policy_documents来获得我想要的东西?

谢谢!

这可能不是最有效的,但您可以这样做:我假设您有一些布尔变量来指示要启用或禁用的策略(policy1_enable、policy2_enable和policy3_enable(。

data "aws_iam_policy_document" "combined" {
source_policy_documents = concat(
var.policy1_enable == true? [data.aws_iam_policy_document.policy1.json]:[],
var.policy2_enable == true? [data.aws_iam_policy_document.policy2.json]:[],
var.policy3_enable == true? [data.aws_iam_policy_document.policy3.json]:[])
}

最新更新