S3のバケットポリシー作成でError putting S3 policy: MalformedPolicy: Action does not apply to any resource(s) in statement

TerraformでS3のバケットポリシーでs3:ListBucketに対してパスを含めたARNのみのResourceを指定するとエラーが発生する。

data "aws_iam_policy_document" "example" {
  statement {
    principals {
      type        = "AWS"
      identifiers = [data.aws_caller_identity.current.account_id]
    }
    actions   = ["s3:ListBucket"]
    resources = ["${aws_s3_bucket.example.arn}/*"] # パスを含めて指定
  }
}

resource "aws_s3_bucket_policy" "example" {
  bucket = aws_s3_bucket.example.bucket
  policy = data.aws_iam_policy_document.example.json
}

apply時に発生するエラーは以下の通り。

Error putting S3 policy: MalformedPolicy: Action does not apply to any resource(s) in statement
...

s3:ListBucketに対してはバケット自体のARNを指定する

上記エラーを修正するにはs3:ListBucketに対してはバケット自体のARNを指定する。

data "aws_iam_policy_document" "example" {
  statement {
    principals {
      type        = "AWS"
      identifiers = [data.aws_caller_identity.current.account_id]
    }
    actions   = ["s3:ListBucket"]
    # resources = ["${aws_s3_bucket.example.arn}/*"]
    resources = ["${aws_s3_bucket.example.arn}"] # パス部分(/*)を削除
  }
}

このように修正するとエラーが解消される。