AWS S3 存储桶提供 'policies must be valid JSON and the first byte must be '{'

AWS S3 Bucket giving 'policies must be valid JSON and the first byte must be '{'

    { 
"Id": "Policy1590051531320", 
"Version": "2012-10-17",
"Statement": [ 
{ "Sid": "Stmt1590051522178", 
"Action": [ "s3:GetObject", 
"s3:GetObjectVersion", 
"s3:PutObject", 
"s3:AbortMultipartUpload", 
"s3:ListMultipartUploadParts", 
"s3:GetBucketVersioning", 
"s3:ListBucket", 
"s3:GetBucketLocation", 
"s3:ListBucketMultipartUploads", 
"s3:ListBucketVersions" ], 
"Effect": "Allow", 
"Resource": ["arn:aws:s3:::lakefs", "arn:aws:s3:::lakefs/backend.txt/*"], 
"Principal": {"AWS": ["arn:aws:iam::REDACTED:user/uing"]
 } 
} 
] 
}

这是我的 s3 存储桶策略,但它返回 'Policies must be valid JSON and the first byte must be '{'。我的资源字段中有正确的存储桶名称和带路径前缀的存储桶名称。知道为什么我会收到此错误吗?

开头不能有这些空格 {。应该是:

{ 
"Id": "Policy1590051531320", 
"Version": "2012-10-17",
"Statement": [ 
{ "Sid": "Stmt1590051522178", 
"Action": [ "s3:GetObject", 
"s3:GetObjectVersion", 
"s3:PutObject", 
"s3:AbortMultipartUpload", 
"s3:ListMultipartUploadParts", 
"s3:GetBucketVersioning", 
"s3:ListBucket", 
"s3:GetBucketLocation", 
"s3:ListBucketMultipartUploads", 
"s3:ListBucketVersions" ], 
"Effect": "Allow", 
"Resource": ["arn:aws:s3:::lakefs", "arn:aws:s3:::lakefs/backend.txt/*"], 
"Principal": {"AWS": ["arn:aws:iam::172787983831:user/uing"]
 } 
} 
] 
}

[这里是 lakeFS 开发人员,但这是一个 AWS 问题]

如错误消息所述,它希望您以 {(并且前面没有空格)开始您的政策。

请注意,S3 将 基于资源的 策略(如这个)与 基于身份的 策略分开,您将在这些策略上设置IAM 服务。有重要的区别。基于身份的策略通常比基于资源的策略更容易设置:错误消息更容易阅读,基于网络的UI可以更友好(并在线提供JSON 政策的错误报告,或相当不错的视觉政策编辑器)等