我正在创建一个Terraform项目并在其中工作,该项目创建了一个用作静态网站的AWS S3 Bucket。
我创建了一个“公共访问块”,并添加了另一个资源来创建“AWS S3存储桶策略”,以允许任何人从存储桶/站点公开访问“GetObject”。
不幸的是,在运行“terraform apply”命令时,我收到了一个错误:
Error: putting S3 Bucket (terraform-course-project-1-d4f420c9) Policy: operation error S3: PutBucketPolicy, https response error StatusCode: 400, RequestID: AN81J2DNCPWB9S2R, HostID: w93iACwvYDKdAv4a6ZyoYWf3u3TdFdQon+FrwvHb/qprNh27w7VMpSDS+Nry+Xa+XAttzJoQY4o237FHACL7Whd0qlhGNC16, api error MalformedPolicy: Unknown field version
â
â with aws_s3_bucket_policy.static-website-public-read,
â on s3.tf line 17, in resource "aws_s3_bucket_policy" "static-website-public-read":
â 17: resource "aws_s3_bucket_policy" "static-website-public-read" {
我使用的代码:
resource "random_id" "bucket_suffix" {
byte_length = 4
}
resource "aws_s3_bucket" "static_website" {
bucket = "terraform-project-s3-web-${random_id.bucket_suffix.hex}"
}
resource "aws_s3_bucket_public_access_block" "static_website" {
bucket = aws_s3_bucket.static_website.id
block_public_acls = false
block_public_policy = false
ignore_public_acls = false
restrict_public_buckets = false
}
resource "aws_s3_bucket_policy" "static-website-public-read" {
bucket = aws_s3_bucket.static_website.id
policy = jsonencode({
version = "2012-10-17"
Statement = [
{
Sid = "PublicReadGetObject"
Effect = "Allow"
Principal = "*"
Action = "s3:GetObject"
Resource = "${aws_s3_bucket.static_website.arn}/*"
}
]
})
}
如何使此政策生效?我找不到任何关于互联网爬行的信息来解释这个错误,特别是:“api错误MalformedPolicy:未知字段版本”。
已阅读有关此问题的类似帖子,但未发现“未知字段”错误。