匿名用户无法启动多部分上传.请验证

Anonymous users cannot initiate multipart uploads. Please authenticate

本文关键字:验证 多部 启动 用户      更新时间:2023-09-26

我得到以下错误-

<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调用,并且还在头中传递Authorization-

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凭证=ACCESSKEYID/2016331/us-east-1/service/AWS4_request,SignedHeaders=授权;主办x-amz-date,签名=09caa362719e578cb48699bbc5bd4e4089335fb56806653186e782ba009ff3a5

感谢任何帮助真的很感激

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

当您满足bucket所有者的要求时,上传需要包括CLI的罐装所有bucket所有者完全控制,这看起来像

aws s3 cp hello.json s3://bucketname/sampleFile/hello.json --no-sign-request --all bucket-owner-full-control

S3 Bucket策略

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

要清理不完整的多部分上传,请转到buckets管理选项卡并创建新的生命周期。有一个选项可以在设定的天数后"清理不完整的多部分上传"。