【发布时间】:2020-01-01 18:02:43
【问题描述】:
我使用的相关包是aws-sdk、multer-s3和multer。
我有这样的上传设置:
aws.config.update({
secretAccessKey: "accessKey",
accessKeyId: "keyId",
region: "eu-west-2"
});
var s3 = new aws.S3();
const upload = multer({
storage: multerS3({
s3,
acl: "public-read",
bucket: "my-buckets-name",
metadata: function(req, file, cb) {
console.log("passed1"); // prints
cb(null, {
fieldName: "file.fieldname"
});
},
key: function(req, file, cb) {
console.log("passed2"); // prints
cb(null, Date.now().toString());
}
})
});
我的路线是这样的,
router.post(
"/single",
[auth, upload.single("image")],
async (req, res) => {
console.log("hereiam"); // never reached
res.json({
msg: "Server received media. Processing..."
});
if (mediaType === "image") {
try { /*...*/ } catch { /*...*/ }
} else { /*...*/ }
passed1 和 passed2 都输出到控制台,我确信我的访问密钥和密钥 ID 是正确的。当我尝试上传图片时,出现 403 错误。
我正在使用本机反应,我正在做
const aws = require("aws-sdk/dist/aws-sdk-react-native");
这完全没有给我任何反馈,在我点击“上传”后,程序就像什么都没发生一样继续运行。
然后我把nodejs导入改成,
const aws = require("aws-sdk");
现在我被抛出 403。不知道我做错了什么。
编辑:
我的 S3 的权限:
【问题讨论】:
-
您确定您的密钥具有正确的权限吗?您能列出您为密钥添加的权限吗?
-
当然,我更新了 OP
-
这些是 S3 存储桶的权限。我想要访问密钥所在的 IAM 用户的权限。您可以在 AWS 控制台的 IAM 部分找到它
-
我没有 IAM 用户。相反,我遇到了this 提示,我只是选择了
Continue to security credentials,因为这是一个个人项目,我还不想打扰安全性和最佳实践。我是否应该创建一个 IAM 用户,这可能会解决此 403 问题/如果我确实创建了一个 IAM 用户,它是否会为您提供更好的方法让我了解如何解决此 403 问题? -
This is all I see 在这一点上,就 AWS 控制台而言
标签: node.js react-native amazon-s3 aws-sdk-js multer-s3