【发布时间】:2021-10-16 06:37:24
【问题描述】:
我正在创建一个预签名的 URL,以便前端的用户可以上传一个文件(最大 10MB)这是我创建它的方式
const s3Params = {
Bucket: S3_BUCKET,
Expires: 30,
Fields: {
key: key,
},
Conditions: [
["eq", "$acl", "public-read"],
["eq", "$x-amz-meta-filename", fileName],
["content-length-range", 1, 10000000], //10MB
["eq", "$x-amz-meta-userid", userid],
],
};
console.log(s3Params);
s3.createPresignedPost(s3Params, (err, data) => {
if (err) {
console.log(err);
return cb({success: false, error: err});
}
data.fields["x-amz-meta-filename"] = fileName;
data.fields["x-amz-meta-userid"] = userid;
const returnData = {
signedRequest: data,
url: `https://${S3_BUCKET}.s3.amazonaws.com/${key}`,
};
return cb({success: true, data: {returnData}});
});
在条件中将最大文件大小(内容长度范围)设置为 10MB,但我仍然能够使用生成的预签名 URL 上传 25MB 的文件。我在想这可能与存储桶策略有关,但我不确定。
这是我的存储桶策略
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::blah.blah/*"
}
]
}
【问题讨论】:
标签: javascript node.js amazon-web-services amazon-s3 aws-sdk