我收到以下错误 -
AccessDenied
匿名用户无法启动分段上传。请验证。
0C687E53286678DE
eqEEEENy6phBYvOySn3gOsbk9wJYjbE / yWK6MBtmR0M4Ir0TEdh9SfApX / EdZZ6sZ7Mc / wSwh0U =
当我调用AWS API从JS启动多部分上传时 - 我已经在我的策略中添加了PutObjectACL,正如其他用户在其他讨论中所建议的那样。但是我仍然会收到此错误 -
以下是我的政策 -
{ "版本":" 2012-10-17", "陈述":[ { " Sid":" ListBucket", "效果":"允许", "校长":{ " AWS":" " }, "行动":" s3:ListBucket", "资源":" arn:aws:s3 ::: bucketName" }, { " Sid":" PutObject", "效果":"允许", "校长":{ " AWS":" " }, "行动":" s3:PutObject", "资源":" arn:aws:s3 ::: bucketName / sampleFile / *" } ] }
我正在使用跟随ajax调用,并且还在标题中传递Authorization - var url =' https://bucketName.s3.amazonaws.com/sampleFile?uploads';
Ĵ$就({
url:url,
类型:" POST&#34 ;,
headers:formHeadersToBeUploaded,
过程数据:假的,
的contentType:假的,
成功:function(){
提醒('提交时成功');
},
错误:功能(xhr,状态,错误){
console.log('发送时出错' + xhr,状态,错误);
}
}); //结束AJAX
授权是 - AWS4-HMAC-SHA256 Credential = ACCESSKEYID / 20160331 / us-east-1 / service / aws4_request,SignedHeaders = authorization; host; x-amz-date,Signature = 09caa362719e578cb48699bbc5bd4e4089335fb56806653186e782ba009ff3a5
非常感谢任何帮助
答案 0 :(得分:0)
匿名主体只是“ *”。另外,除非您希望所有人看到您的存储桶,否则我不会将Listbucket授予匿名用户。另外,您还想确保对对象的控制。另外,对于分段上传,您希望启用生命周期策略以删除失败的上传。
当您对存储桶拥有者提出要求时,上载需要将所有存储桶拥有者完全控制的罐头控件包含在CLI中,
aws s3 cp hello.json s3://bucketname/sampleFile/hello.json --no-sign-request --all bucket-owner-full-control
S3存储桶策略
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PutObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::bucketName/sampleFile/*",
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
}
]
}
要清理不完整的分段上传,请转到存储桶的“管理”选项卡并创建一个新的生命周期。在设定的天数后,可以选择“清理不完整的分段上传”。