aws_iam_policy_documentデータソースのprincipals

aws_iam_policy_documentデータソースのprincipalstypeidentifiersが必須項目で以下のように記述する。

data "aws_iam_policy_document" "example" {
  ...
  statement {
    ...
    principals {
      type        = "Service"
      identifiers = ["ec2.amazonaws.com"]
    }
    ...
  }
  ...
}

以下のようなPolicyになる。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      ...
      "Principal": {
        "Service": "ec2.amazonaws.com"
      }
      ...
    },
  ]
}

"Principal": "*"を指定する例がよく見られるが、aws_iam_policy_documentprincipalsはオブジェクト型なので principals = "*"のようにstringを指定できない。

またprincipalsの直下のtype,identifiersは必須項目なので省略できない。

“Principal”: “*” を指定する方法

aws_iam_policy_documentデータソースで"Principal": "*"を指定するには以下の様にtypeidentifiers*を指定する。

data "aws_iam_policy_document" "example" {
  ...
  statement {
    ...
    principals {
      type        = "*"
      identifiers = ["*"]
    }
    ...
  }
  ...
}

すると以下のように"Principal": "*"が設定される。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      ...
      "Principal": "*"
      ...
    },
  ]
}

参考

Data Source: aws_iam_policy_document(principals and not_principals)