Terraform 带条件的地形集变量

Terraform 带条件的地形集变量,terraform,terraform0.11,Terraform,Terraform0.11,我试图将一个变量设置为一个字符串,该字符串稍后将与aws s3 bucket策略的另一个字符串连接。我正试图通过定义一个局部变量来实现这一点,但我还需要指定一个条件,在这个条件下我将使用它。我正在使用Terraform11 例如: 如果set_bucket_policy为false,则将变量设置为空字符串“” 否则,请使用heredoc设置变量的字符串值 例如,非工作代码: locals { my_bucket_policy = var.set_bucket_policy == &quo

我试图将一个变量设置为一个字符串,该字符串稍后将与aws s3 bucket策略的另一个字符串连接。我正试图通过定义一个局部变量来实现这一点,但我还需要指定一个条件,在这个条件下我将使用它。我正在使用Terraform11

例如:

  • 如果set_bucket_policy为false,则将变量设置为空字符串“”
  • 否则,请使用heredoc设置变量的字符串值
例如,非工作代码:

locals {
  my_bucket_policy = var.set_bucket_policy == "false" ? "" : <<EOF
  {
    "Action": "s3:Get*",
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:aws:iam::${data.aws_caller_identity.current.account_id}:role/myrole"
    },
    "Resource": [
      "arn:aws:s3:::mybucket",
      "arn:aws:s3:::mybucket/*"
    ],
    "Sid": ""
  }
  EOF
}

本地人{

my_bucket_policy=var.set_bucket_policy==“false”?:我认为这非常接近,我创建了一个小示例,演示如何使用条件。有关更多详细信息,您可以查看Terraform的

main.tf

variable "set_bucket_policy" {
    type = bool
}

output "my_bucket_policy" {
    value = var.set_bucket_policy == false ? "is set to false" : "is set to true"
}
样本输出

% terraform apply -var 'set_bucket_policy=false' -auto-approve

Apply complete! Resources: 0 added, 0 changed, 0 destroyed.

Outputs:

my_bucket_policy = is set to false
% terraform apply -var 'set_bucket_policy=true' -auto-approve

Apply complete! Resources: 0 added, 0 changed, 0 destroyed.

Outputs:

my_bucket_policy = is set to true

实际的错误消息是什么?错误:错误加载模块:模块mymodule:错误解析。terraform/modules/56fe672fc5a95438bdd61eddf28b668b/s3.tf:在12:29:未知令牌:12:29标识变量设置\ bucket\策略