Amazon s3 如何从1Mbps加速S3 signedUrl上传
我目前正在利用s3 signedUrl对前端的用户隐藏我的凭据。我已经设置好并开始工作,但速度非常慢,大约为1.2mb/s。使用速度测试,我的wifi显示为11.9mb/s,所以我不相信这是我的网络。我一直在测试的图像大小只有8MB 服务器Amazon s3 如何从1Mbps加速S3 signedUrl上传,amazon-s3,pre-signed-url,Amazon S3,Pre Signed Url,我目前正在利用s3 signedUrl对前端的用户隐藏我的凭据。我已经设置好并开始工作,但速度非常慢,大约为1.2mb/s。使用速度测试,我的wifi显示为11.9mb/s,所以我不相信这是我的网络。我一直在测试的图像大小只有8MB 服务器 const { uploadFile } = require("../services/aws"); app.post("/activity/image-upload", async (req, res) =>
const { uploadFile } = require("../services/aws");
app.post("/activity/image-upload", async (req, res) => {
try {
const { _projectId, name, type } = req.body;
const key = `${_projectId}/activities/${name}`;
const signedUrl = await uploadFile({ key, type });
res.status(200).send(signedUrl);
} catch (err) {
console.log("/activity/upload-image err", err);
res.status(422).send();
}
});
AWS服务
const aws = require("aws-sdk");
const keys = require("../config/keys");
aws.config.update({
accessKeyId: keys.aws.accessKeyId,
secretAccessKey: keys.aws.secretAccessKey,
useAccelerateEndpoint: true,
signatureVersion: "v4",
region: "my-region",
});
const s3 = new aws.S3();
exports.uploadFile = async ({ type, key }) => {
try {
const awsUrl = await s3.getSignedUrl("putObject", {
Bucket: keys.aws.bucket,
ContentType: type,
Key: key,
ACL: "public-read",
});
return awsUrl;
} catch (err) {
throw err;
}
};
前端
const handleUpload = async ({ file, onSuccess, onProgress }) => {
try {
const res = await api.post("/activity/image-upload", {
type: file.type,
name: file.name,
_projectId,
});
const upload = await axios.put(res.data, file, {
headers: {
"Content-Type": file.type,
},
onUploadProgress: handleProgressChange,
});
} catch (err) {
console.log("err", err);
}
};
请求速度图像
您可以看到上面对图像上传的调用将在63毫秒后返回,因此挂断不是我的服务器得到的签名。axiosPUT
对s3 signedURL的请求为6.37s。除非我在数学方面很糟糕,我上传的8MB文件大约是1.2mb/s。我错过了什么
更新7/23
这是我通过谷歌进行速度测试的照片,显示上传速度为10.8mbs。
我试着在s3控制台上传图像来比较速度。当我通过s3控制台上传时,它是10.11s!!!他们有不同的计划来控制速度吗?我甚至利用了传输加速,速度很慢。它可能是你的浏览器。您可以使用-v
选项尝试curl
。你说你的文件是8MB,为什么它显示876B,你是在进行多部分上传吗?不知道为什么它会显示这么多。我可以确认文件是8MB。据我所知,我没有使用multi-part。使用预先签名的url将142.1MB上传到s3花了27.4秒。这使它达到27 Mbps。我有1 Gbps的连接。我现在的网速是285 Mbps。我不确定。谢谢你的建议。我在这里发疯了,可能是你的浏览器。您可以使用-v
选项尝试curl
。你说你的文件是8MB,为什么它显示876B,你是在进行多部分上传吗?不知道为什么它会显示这么多。我可以确认文件是8MB。据我所知,我没有使用multi-part。使用预先签名的url将142.1MB上传到s3花了27.4秒。这使它达到27 Mbps。我有1 Gbps的连接。我现在的网速是285 Mbps。我不确定。谢谢你的建议。我在这里发疯了。