Aws-cli: 策略必须是有效的 JSON 并且第一个字节必须是“{”

创建于 2017-08-19  ·  3评论  ·  资料来源: aws/aws-cli

你好。 我在几个问题中看到了这个错误,我一定很累。 对我来说,解决方案应该是什么并不明显。 我正在尝试上传存储桶策略并收到 JSON 错误。 然后我下载了(使用 UI 输入并且工作正常)/上传并得到相同的错误。 关于如何使用该工具上传这个的任何建议? 保持良好的工作!

$ aws s3api get-bucket-policy --bucket cloud-1-$NAME > student-1-bucket.manual.json
$ aws s3api put-bucket-policy --bucket cloud-1-$NAME --policy student-1-bucket.manual.json 

An error occurred (MalformedPolicy) when calling the PutBucketPolicy operation: Policies must be valid JSON and the first byte must be '{'
$ cat student-1-bucket.manual.json 
{
    "Policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"ExampleStatement1\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::934017622331:user/student-1-cloud\"},\"Action\":\"*\",\"Resource\":\"arn:aws:s3:::cloud-1-14604\"}]}"
}
$

最有用的评论

--policy通常接受一个 JSON 字符串,它认为您的文件名实际上是您要使用的 JSON 文档。 要处理文件,您需要像这样使用file://协议:

aws s3api put-bucket-policy --bucket cloud-1-$NAME --policy file://student-1-bucket.manual.json

请注意,我无权访问您的环境,因此如果file://位失败,您可能希望为它提供student-1-bucket.manual.json的绝对路径。

所有3条评论

--policy通常接受一个 JSON 字符串,它认为您的文件名实际上是您要使用的 JSON 文档。 要处理文件,您需要像这样使用file://协议:

aws s3api put-bucket-policy --bucket cloud-1-$NAME --policy file://student-1-bucket.manual.json

请注意,我无权访问您的环境,因此如果file://位失败,您可能希望为它提供student-1-bucket.manual.json的绝对路径。

@cwgem你完全正确! 谢谢你。

规格:

aws s3api put-bucket-policy \
--bucket $BucketName \ 
--policy file://$PathToPolicy/bucketpolicy.json

例如:

aws s3api put-bucket-policy \
--bucket firstbucket.mydomain.com \
--policy file:///Users/Andy/Desktop/bucketpolicy.json
此页面是否有帮助?
0 / 5 - 0 等级