2
我一直在嘗試幾天來從aws-sdk獲取JavaScript上傳文件到s3存儲桶。我已經添加了正確的CORS策略,並且爲了測試目的,存儲桶具有公共權限。文件上傳只能在50%的時間內完成。AWS S3訪問被拒絕僅有時
我想從我的網站立即連續上傳3-4個文件,但我在第二個之後拒絕訪問。出於某種原因,前2個成功上傳,但第3個起始失敗。我不知道我是否發現了一個小故障,或者如果有什麼我做錯了。
我CORs的政策是。我也曾嘗試
`<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>http://*</AllowedOrigin>
<AllowedOrigin>https://*</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<ExposeHeader>ETag</ExposeHeader>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>`
我也曾嘗試:
<AllowedOrigin>*</AllowedOrigin>
要沒有成功。
要上傳文件,我使用來自aws-cognito sdk for js的臨時證書。我用來上傳文件的代碼如下:
function uploadFile(fileData,callback){
var file = fileData[4];
var key = "";
for(i=0; i<3; i++){
var temp = Math.ceil(Math.random()*1000000000000)
key=key+temp;
}
AWS.config.sessionToken= mySessionToken;
AWS.config.accessKeyId= myAccessKey;
AWS.config.secretAccessKey= mySecretKey;
AWS.config.region= myRegion;
var bucket = new AWS.S3({params: {Bucket: myBucketName}});
var params = {Key: key, ContentType: file.type, Body: file, ACL:'bucket-owner-
full-control'};
bucket.upload(params, function (err, data) {
if (err) {
callback(false,err,fileData);
}
else{
callback(true,"",fileData);
}
});
}
如果重要的是我上傳的網站託管在ec2實例上。
我知道有很多關於如何讓文件上傳與S3一起工作的帖子,但我從來沒有看到過它只在一段時間內工作的地方。我假設我使用的證書和我的CORS配置是正確的,否則上傳不會正常工作?
在此先感謝您的幫助!
編輯:
此錯誤只發生在3日連續上傳和開始。我上傳的第一個和第二個文件沒有錯誤並且成功。
我收到錯誤代碼如下:
將[S3Instance] 403禁止
<Error>
<Code>
AccessDenied
</Code>
<Message>
Access Denied
</Message>
<RequestId>
RequestId
</RequestId>
<HostId>
HostId
</HostId>
</Error>
當您說失敗時,您能否請您記下您從SDK獲取的錯誤消息並將其添加到問題中? –
@ShobhitPuri感謝您的回覆。我添加了收到的錯誤代碼。 – JohnSmith
有時候由於系統時鐘問題,我看到了AWS SDK的錯誤。也許嘗試重置它。 –