使用Terraform创建AWS S3 VPC Endpoint策略报InvalidPolicyDocument错误如何解决
问题根因
你遇到的报错是因为策略结构不符合AWS IAM策略的标准规范,VPC端点策略要求顶层必须包含两个必填字段:
- 固定的
Version字段,取值为2012-10-17,这是当前AWS策略的通用版本号 Statement数组,所有的权限规则(包括你写的Sid、Principal、Action等字段)都必须放在这个数组内,不能直接放在策略顶层
修正后的配置
policy = jsonencode({ Version = "2012-10-17" Statement = [ { Sid = "Restrict-Access-To-Specific-Bucket" Principal = "*" Action = "*" Effect = "Allow" Resource = [ "arn:aws:s3:::${aws_s3_bucket.snowflake-data-bucket-raw.id}", "arn:aws:s3:::${aws_s3_bucket.snowflake-data-bucket-raw.id}/*" ] } ] })
补充说明
如果后续需要新增多条权限规则,直接在Statement数组中追加新的规则对象即可。如果需要校验策略合法性,可以先把jsonencode的输出打印出来,手动对照AWS策略语法规则排查问题。
内容的提问来源于stack exchange,提问作者sd-gallowaystorm
相关产品推荐
相关产品推荐

