Javascript 匿名用户无法启动多部分上载。请验证

Javascript 匿名用户无法启动多部分上载。请验证,javascript,amazon-web-services,amazon-s3,Javascript,Amazon Web Services,Amazon S3,我得到以下错误- <Error> <Code>AccessDenied</Code> <Message>Anonymous users cannot initiate multipart uploads. Please authenticate.</Message> <RequestId>0C687E53286678DE</RequestId> <HostId>eqEEEENy6phBYvOySn3

我得到以下错误-

<Error>
<Code>AccessDenied</Code>
<Message>Anonymous users cannot initiate multipart uploads.  Please authenticate.</Message>
<RequestId>0C687E53286678DE</RequestId>
<HostId>eqEEEENy6phBYvOySn3gOsbk9wJYjbE/yWK6MBtmR0M4Ir0TEdh9SfApX/EdZZ6sZ7Mc/wSwh0U=</HostId>
</Error>
当我调用AWS API从JS启动多部分上传时,正如其他用户在其他讨论中建议的那样,我也在我的策略中添加了PutObjectACL。但是我仍然不断地得到这个错误-

以下是我的政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ListBucket",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::bucketName"
        },
        {
            "Sid": "PutObject",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::bucketName/sampleFile/*"
        }
    ]
}
我正在使用以下ajax调用,并在标头中传递授权-

var url = 'https://bucketName.s3.amazonaws.com/sampleFile?uploads';

j$.ajax({
            url: url,
            type:"POST",
            headers: formHeadersToBeUploaded,
            processData:false,      
            contentType:false,
           success: function() { 
                alert('Successful while submission');  
            },
        error: function(xhr, status, error) {  
            console.log('Error while sending ' + xhr, status, error);
            }
        }); // END OF AJAX
授权书是—

AWS4-HMAC-SHA256凭证=访问密钥ID/20160331/us-east-1/服务/AWS4_请求,签名头=授权;主办x-amz-date,签名=09CAA362719E578CB48699BBC5BD4E408935FB56806653186E782BA009FF3A5


谢谢,非常感谢您的帮助

匿名委托人只是“*”。此外,我不会将Listbucket授予anonymous,除非你想让每个人都看到你的bucket。此外,还需要确保您可以控制对象。此外,对于多部分上载,您希望启用生命周期策略来删除失败的上载

当您满足bucket owner要求时,上传需要包括与CLI类似的所有bucket owner完全控制

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"
                }
            }
        }
    ]
}

要清除不完整的多部分上载,请转到Bucket Management选项卡并创建新的生命周期。在设定的天数之后,可以选择“清理不完整的多部分上载”

我还在头中传递授权。。。这是你唯一没有展示给我们的东西。例如,请显示捕获的请求头。S3甚至不认为您在尝试进行身份验证,因此在这一点上,您的策略声明不是问题所在——它没有被评估。现在唯一可能值得注意的是,您缺少逗号后的预期空间,紧靠
SignedHeaders=
Signature=
之前。我不知道这是否重要,但它与示例不同。