首页 > 解决方案 > AWS 文件加载适用于本地主机,但不适用于 EC2(节点、快递、反应)。获取 403 禁止

问题描述

我在节点上有应用程序。用于向 AWS 发送文件的 API 端点包含此部分

const multer = require('multer');
const aws = require('aws-sdk');
const multerS3 = require('multer-s3');

aws.config.update({
  secretAccessKey: require("../config/keys").aws.key,
  accessKeyId: require("../config/keys").aws.id,
  region: 'eu-central-1'
});

const s3 = new aws.S3();

const storage = multerS3({
  s3: s3,
  bucket: require("../config/keys").aws.bucket,
  key: function (req, file, cb) {
    cb(null, Date.now().toString());
  }
});

const upload = multer({ storage: storage });

module.exports = upload;

我这样称呼它

const upload = require('../../middleware/multer-aws');

router.post("/add", upload.any('file'), (req, res) => {
...

当我在 localhost 上测试加载文件时,它运行良好,但是当我在 EC2 实例上执行相同操作时,我有403 Forbidden响应。

在我的代码中,我没有 403 代码,所以它肯定来自 AWS。

我不知道问题出在哪里以及如何解决。有任何想法吗?

标签: node.jsamazon-web-servicesamazon-s3amazon-ec2multer

解决方案


看起来一些 NACL 问题出站 HTTP 访问可能被 EC2 实例阻止,如果 AWS 访问密钥和密钥在本地实例中完美工作并将文件上传到 S3,它应该可以从 EC2 工作,请检查 NACL


推荐阅读