程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了无法通过预签名 URL 访问 Amazon S3 存储桶中的 PDF 文件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决无法通过预签名 URL 访问 Amazon S3 存储桶中的 PDF 文件?

开发过程中遇到无法通过预签名 URL 访问 Amazon S3 存储桶中的 PDF 文件的问题如何解决?下面主要结合日常开发的经验,给出你关于无法通过预签名 URL 访问 Amazon S3 存储桶中的 PDF 文件的解决方法建议,希望对你解决无法通过预签名 URL 访问 Amazon S3 存储桶中的 PDF 文件有所启发或帮助;

我正在学习使用 React 和 Node.Js 从 Amazon S3 下载文件。这个想法是当我点击客户端的下载按钮时,文件下载应该自动开始。到目前为止,我已经成功地使用下面的代码从后端获取了预先签名的 URL。

index.Js

const express = require("express");
const downloadRoutes = require("./routes/downloadRoutes");

const app = express();

app.use("/API/download",downloadRoutes);

app.Listen(5000,() => {
  console.log("Server Listening on port 5000");
});

routes/downloadRoutes.Js

const express = require("express");
const dotenv = require("dotenv");
const AWS = require("aws-sdk");

dotenv.config();

const router = express.Router();

const s3 = new AWS.S3({
  accessKeyID: process.env.AMAZON_ACESS_KEY_ID,secretAccessKey: process.env.AMAZON_SECRET_ACCESS_KEY,});

router.get("/",(req,res) => {
  s3.getSignedUrl(
    "getobject",{
      Bucket: "download-hemanta-cv",ResponseContentType: "application/pdf",Key: "CV_Hemanta_Sundaray.pdf",},(err,url) => {
      console.log("Error",err,"url",url);
      if (err) {
        next(err);
      } else {
        res.send(url);
      }
    }
  );
});

module.exports = router;

我面临的问题是当我在 Chrome 中粘贴 URL 时,我收到以下消息。

无法通过预签名 URL 访问 Amazon S3 存储桶中的 PDF 文件

如何在浏览器中打开 URL 时看到 pdf 文件?

解决方法

AWS S3 需要签名 V4 才能发送到较新区域的请求。 Here 是文档链接。

Amazon S3 支持签名版本 4,一种用于身份验证的协议 所有 AWS 区域中对 AWS 服务的入站 API 请求。在这 2014 年 1 月 30 日之前创建的 AWS 区域将继续 支持之前的协议,签名版本 2。任何新的区域 2014 年 1 月 30 日之后将仅支持 Signature Version 4 和 因此对这些区域的所有请求都必须带有签名 版本 4。

要通过 aws sdk 发送签名请求,我们只需要在初始化对象时设置 signatureVersion。

const s3 = new AWS.S3({
  region: 'ap-south-1',signatureVersion: "v4",accessKeyID: process.env.AMAZON_ACESS_KEY_ID,secretAccessKey: process.env.AMAZON_SECRET_ACCESS_KEY 
});

大佬总结

以上是大佬教程为你收集整理的无法通过预签名 URL 访问 Amazon S3 存储桶中的 PDF 文件全部内容,希望文章能够帮你解决无法通过预签名 URL 访问 Amazon S3 存储桶中的 PDF 文件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: