首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在尝试使用preSignedUrl将图像上传到亚马逊网络服务s3存储桶时,我收到了400错误请求错误。哪里出了问题?

在尝试使用preSignedUrl将图像上传到亚马逊网络服务s3存储桶时,我收到了400错误请求错误。哪里出了问题?
EN

Stack Overflow用户
提问于 2020-11-12 12:15:54
回答 1查看 585关注 0票数 0

我的存储桶使用IAM配置,后台使用nodejs。我整晚都在寻找解决方案。但是找不到答案。

这是我为aws上的用户配置的策略:

代码语言:javascript
复制
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:GetAccessPoint",
                "s3:PutAccountPublicAccessBlock",
                "s3:GetAccountPublicAccessBlock",
                "s3:ListAllMyBuckets",
                "s3:ListAccessPoints",
                "s3:ListJobs",
                "s3:CreateJob"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::my-first-bucket-stephengr/*",
                "arn:aws:s3:::my-first-bucket-stephengr",
                "arn:aws:s3:*:041892289571:accesspoint/*",
                "arn:aws:s3:*:041892289571:job/*"
            ]
        }
    ]
}

后台代码: app.get("/api/upload",loginRequired,function(req,res){

代码语言:javascript
复制
  var key = `${req.user.id}/${uuid()}.png`;
  var fileName = key.split("/")[1];

  s3.getSignedUrl("putObject", {
      Bucket: "my-first-bucket-stephengr",
      ContentType: "image/png",
      Key: key

  }, (err, url) => {
      res.json({key, url, fileName});
  })

})

前端代码:异步函数handleSubmit(e){ e.preventDefault();

代码语言:javascript
复制
    var res = await axios.get("/api/upload", {headers: authHeader()});

    try{
    
        await axios.put(res.data.url, file, {headers: {ContentType: file.type}})

    }catch(err){
        console.log(err)
    }

    console.log(res.data);
}
EN

回答 1

Stack Overflow用户

发布于 2020-11-12 18:08:33

错误是由区域引起的。在后台添加region属性修复问题:

代码语言:javascript
复制
    var s3 = new AWS.S3({
    accessKeyId: process.env.ACCESS_KEY_ID,
    secretAccessKey: process.env.SECRET_ACCESS_KEY,
    region: "ap-south-1"
    })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64797841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档