Terraform配置S3 Bucket策略时JSON格式错误问题求助
Terraform配置S3 Bucket策略时JSON无效错误的解决方法
问题原因
- JSON语法不合法:
Statement数组的最后一个元素后带有多余的逗号(第二个Statement对象闭合}后的,),JSON规范不允许数组末尾存在尾随逗号。 - 混淆了Terraform资源属性与S3策略JSON:把Terraform的
depends_on配置错误地写入了S3策略的JSON内容里,depends_on是Terraform资源的参数,不属于S3 Bucket Policy的JSON结构。 - Terraform语法冗余:配置末尾多了一个闭合大括号
},导致整体语法结构错误。
修复后的完整配置
resource "aws_s3_bucket_policy" "jenkins_bucket_policy" { bucket = aws_s3_bucket.jenkins_bucket.id # 替换为你的S3 Bucket资源引用 policy = <<POLICY { "Version": "2012-10-17", "Id": "Policy1704624583452", "Statement": [ { "Sid": "Stmt1704622653819", "Effect": "Allow", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::jenkins-prj01-s3bucket/", "arn:aws:s3:::jenkins-prj01-s3bucket/*" ] }, { "Sid": "PublicReadGetObject", "Principal": "*", "Action": "s3:GetObject", "Effect": "Allow", "Resource": [ "arn:aws:s3:::jenkins-prj01-s3bucket/", "arn:aws:s3:::jenkins-prj01-s3bucket/*" ] } ] } POLICY depends_on = [aws_s3_bucket_public_access_block.override_default_setting] }
额外说明
- 确保代码中有对应的S3 Bucket资源定义(比如
aws_s3_bucket.jenkins_bucket),并正确引用其ID。 - 完全开放的权限存在安全风险,建议根据实际需求限制
Principal和Action的范围。
内容的提问来源于stack exchange,提问作者Mohamed Inshaf
相关产品推荐
相关产品推荐

