Счетчик не работает правильно в Terraform Resource aws_iam_policy - PullRequest
1 голос
/ 03 апреля 2020

Я создал ресурсы для log_group для списка имен заданных заданий

resource "aws_cloudwatch_log_group" "logGroups" {
  count             = length(var.jobnames)
  name              = format("/aws/lambda/%s", format(local.function_name_format, var.jobnames[count.index]))
  retention_in_days = 7
}

and now for the each log resource i am creating an iam policy

resource "aws_iam_policy" "base_iam_policy" {
  count = length(var.jobnames)
  name = format(local.base_iam_policy_name_format, var.jobnames[count.index])
  path = "/"
  description = "Base IAM policy for creating a lambda"

  policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": [
        "${element(aws_cloudwatch_log_group.logGroups.*.arn, count.index)}*"
      ]
    },
    {
      "Action": [
        "cloudwatch:PutMetricData",
        "cloudwatch:GetMetricData",
        "cloudwatch:GetMetricStatistics",
        "cloudwatch:ListMetrics"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:CreateNetworkInterface",
        "ec2:DescribeNetworkInterfaces",
        "ec2:DeleteNetworkInterface"
      ],
      "Resource": "*",
      "Condition": {
            "StringEquals": {
                "aws:RequestedRegion": "${var.region}"
            }
        }
    }
  ]
}
EOF

}

Проблема в том, что для каждого BASE_IAM_POLICY ресурс для CreateLogStream одинаков. Похоже, что в этом "${element(aws_cloudwatch_log_group.logGroups.*.arn, count.index)}*" число не увеличивается?

1 Ответ

0 голосов
/ 03 апреля 2020

Честно говоря, это похоже на ошибку в terraform. А пока я бы порекомендовал индексировать элементы напрямую, например:

"${aws_cloudwatch_log_group.logGroups[count.index].arn}*"
...