You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js Express对接Amazon S3上传图片后获取预签名URL报错如何解决

报错解决方案

你出现该报错的核心原因是调用s3.getSignedUrlPromise时传入的操作类型参数错误:AWS SDK v2 中用于获取S3对象的标准操作标识为getObject,你填写的getImage不属于S3的合法操作类型,触发了SDK内部参数校验的异常。

你已经验证s3.getObject可正常获取对象,说明S3实例初始化、权限配置、存储桶名、对象key均无问题,仅需修改操作标识参数即可解决问题。

修正后的代码示例如下:

// 写法1:仅使用await(推荐)
try {
  const url = await s3.getSignedUrlPromise('getObject', {
    Bucket: BUCKET_NAME,
    Key: recordKey,
    Expires: 60
  });
  console.log(url);
} catch (err) {
  console.log(err);
}
// 写法2:仅使用.then/.catch(无需配合await)
s3.getSignedUrlPromise('getObject', {
  Bucket: BUCKET_NAME,
  Key: recordKey,
  Expires: 60
}).then(function(url) {
  console.log(url);
}).catch(function(err) {
  console.log(err);
});

补充说明:你原有代码中同时混用await和.then的写法会导致最终打印的url变量为undefined,因为await会等待Promise执行完成,但.then的返回值没有被正确捕获,建议统一使用其中一种异步处理写法即可。


内容的提问来源于stack exchange,提问作者Cameron Davis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 00:27:05