我有一份由一种地形资源归还的保单:
data.aws_iam_policy_document.cluster_assume_role_policy.jsonjson对象如下:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::12345678900000:oidc-provider/oidc.eks.eu-west-1.amazonaws.com/id/879BUOGVDDFGHFGVB85HJNVIFDHPJKPMC"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"oidc.eks.eu-west-1.amazonaws.com/id/879BUOGVDDFGHFGVB85HJNVIFDHPJKPMC:aud": "sts.amazonaws.com"
}
}
}
]
}我需要在这个json中替换几个子字符串,并能够在另一个terraform资源中使用它作为引用,比如变量等等。
system:serviceaccount:kube-system:cluster-autoscaler
请您提出通过terraform工具/功能实现这一目标的任何/最佳方法吗?
发布于 2021-11-06 21:48:22
我同意你的意见,这是最好从零开始的新政策.
但是我们仍然可以使用terraform提供的功能来完成这个任务:
( jsondecode,jsonencode &置换)
下面是一个示例:
provider "aws" {
region = "us-east-1"
}
data "aws_iam_policy_document" "test" {
statement {
sid = ""
actions = ["sts:AssumeRoleWithWebIdentity"]
condition {
test = "StringEquals"
variable = "s3:prefix"
values = ["sts.amazonaws.com"]
}
}
}
output "replace" {
value = jsondecode(
replace(
jsonencode(data.aws_iam_policy_document.test.json),
"sts.amazonaws.com",
"system:serviceaccount"
)
)
}所以这里有一些功能..。
我们从策略json
replace中得到一个字符串,我们可以为您想要的jsondecode多次调用所需的替换,然后将字符串转换回json,以便在需要的地方使用https://stackoverflow.com/questions/69858112
复制相似问题