Terraform 基于变量有条件地修改iam策略资源定义

Terraform 基于变量有条件地修改iam策略资源定义,terraform,amazon-iam,Terraform,Amazon Iam,terraform中是否有选项可以有条件地设置资源,作为AWS IAM策略定义的一部分。所以,若变量为True,则设置一个资源值,若变量为False,则设置另一个资源值 这是我的政策: policy = <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow&quo

terraform中是否有选项可以有条件地设置资源,作为AWS IAM策略定义的一部分。所以,若变量为True,则设置一个资源值,若变量为False,则设置另一个资源值

这是我的政策:

 policy = <<EOF
{
    "Version": "2012-10-17",
    "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:DescribeKey"
          ],
          "Resource": "arn:aws:kms:us-east-1:xxxxx:key/${var.platform_development_mode} ? * : ${var.platform_vault_kms_id}"
        }
    ]
}
若要设置条件,请获取“*”或精确的键id值

谢谢,, 米罗斯拉夫试试这个

 policy = <<EOF
{
    "Version": "2012-10-17",
    "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:DescribeKey"
          ],
          "Resource": "arn:aws:kms:us-east-1:xxxxx:key/${var.platform_development_mode ? "*" : var.platform_vault_kms_id}"
        }
    ]
}

policy=我建议您尝试使用工作区,这样您就可以使用地图,即您可以使用
var.kms\u id[terraform.workspace]
并使用开发密钥进行开发,使用生产密钥进行生产。是的,这很有效!非常感谢。
 policy = <<EOF
{
    "Version": "2012-10-17",
    "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:DescribeKey"
          ],
          "Resource": "arn:aws:kms:us-east-1:xxxxx:key/${var.platform_development_mode ? "*" : var.platform_vault_kms_id}"
        }
    ]
}