Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 如何从1Mbps加速S3 signedUrl上传_Amazon S3_Pre Signed Url - Fatal编程技术网

Amazon s3 如何从1Mbps加速S3 signedUrl上传

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) =>

我目前正在利用s3 signedUrl对前端的用户隐藏我的凭据。我已经设置好并开始工作,但速度非常慢,大约为1.2mb/s。使用速度测试,我的wifi显示为11.9mb/s,所以我不相信这是我的网络。我一直在测试的图像大小只有8MB

服务器

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毫秒后返回,因此挂断不是我的服务器得到的签名。axios
PUT
对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。我不确定。谢谢你的建议。我在这里发疯了。