【问题标题】:Terraform fails to create a policy using data from Parameter StoreTerraform 无法使用 Parameter Store 中的数据创建策略
【发布时间】:2019-12-17 15:25:11
【问题描述】:

我在 Parameter Store 中有一个以字符串形式存储的 IP 地址的逗号分隔列表。在 Terraform 中,我试图将它们插入到 S3 存储桶策略的语句中。

参数存储中的值:10.7.60.210/32, 10.3.113.172/32, 10.9.128.86/32, 10.7.33.40/29, 10.1.168.30/32

data "aws_ssm_parameter" "office_ips" {
  name = "/ops/office/ips"
}

locals {
  ip_list = ["${split(",", data.aws_ssm_parameter.office_ips.value)}"]
}

resource "aws_s3_bucket_policy" "internal" {
  bucket = "${local.bucket_name}"

  policy = <<POLICY
{
  "Version": "2012-10-17",
  "Id": "allowInternalAccess",
  "Statement": [
    {
      "Sid": "IPAllow",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::${local.bucket_name}/app/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": [
            "${jsonencode(concat(formatlist("%s", local.ip_list)))}"
          ]
        }
      }
    }
  ]
}
POLICY
}

当我运行terraform plan 时,我收到以下信息:

aws_s3_bucket_policy.internal-tooling:“策略”包含无效的 JSON:数组元素后的无效字符“1”

【问题讨论】:

  • 如果您可以将整个策略作为模板并将其呈现为与您的 IP 一起用作变量值,那就太好了。

标签: terraform aws-parameter-store


【解决方案1】:

问题是我在 Parameter Store 中以String 的形式存储数据,而我应该以StringList 的形式存储数据。

【讨论】:

    猜你喜欢
    • 2021-10-26
    • 2021-10-17
    • 2021-05-28
    • 1970-01-01
    • 2019-08-14
    • 2020-08-22
    • 2022-11-03
    • 2018-02-28
    • 2023-01-12
    相关资源
    最近更新 更多