AWS S3 Access有时仅被拒绝

时间:2017-08-29 19:19:59

标签: javascript amazon-web-services file-upload amazon-s3 amazon-ec2

我已经尝试了几天从aws-sdk获取javascript的上传文件到s3存储桶。我添加了正确的CORS策略,并且出于测试目的,存储桶具有公共权限。文件上传仅在50%的情况下有效。

我正在尝试从我的网站上连续上传3-4个文件,但是在第二个之后我被拒绝访问。由于某种原因,前2个上传成功但第3个以后失败。我不知道我是否发现了一个小故障,或者我是否做错了什么。

我的CORs政策是。我也试过

call

我也尝试过:

`<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>` 

没有成功。

要上传文件,我使用aws-cognito sdk中的临时凭证作为js。我用来上传文件的代码如下:

<AllowedOrigin>*</AllowedOrigin>

如果重要的话,我上传的网站是在ec2实例上托管的。

我知道有很多关于如何让文件上传与S3一起工作的帖子,但我从未见过任何只在一部分时间内工作的地方。我假设我使用的凭据和我的CORS配置是正确的,否则上传将无法正常工作?

提前感谢您的帮助!

编辑:

此错误仅发生在第3次连续上传及以后。我上传的第一个和第二个文件没有错误并且成功。

我收到的错误代码如下:

放入[S3Instance] 403 Forbidden

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);
}
});

}

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,我将两个策略:AWSLambdaExecute和AWSLambdaBasicExecutionRole附加到与我的lambda相关联的IAM角色上,从而解决了该问题。

答案 1 :(得分:0)

启用CloudTrail日志记录并查看日志以确定原因。