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

Node.js集成S3调用getSignedUrl遇KMS加密签名版本4错误求解决

解决S3预签名URL请求的KMS加密签名错误
  • 错误原因:你的S3桶启用了AWS KMS托管密钥的服务器端加密,这类请求强制要求使用AWS Signature Version 4进行签名,当前SDK实例未显式指定该签名版本,导致签名不兼容。

  • 解决方案:在初始化S3客户端时,显式配置signatureVersion: 'v4'参数。

修改后的代码示例:

export const platformS3 = new S3({
  region: process.env.PLATFORM_S3_REGION,
  signatureVersion: 'v4' // 新增配置,指定签名版本为v4
});

const SIGNED_URL_EXPIRED_SECONDS = 300;

export const getSignedUrl = async ({
  id,
  bucket,
  pathInBucket,
}: FileUpload) => {

  const fileUrl = platformS3.getSignedUrl('getObject', {
    Bucket: bucket,
    Key: pathInBucket,
    Expires: SIGNED_URL_EXPIRED_SECONDS,
  });

  return { fileUrl };
};
  • 补充说明:AWS 2014年后推出的区域(包括eu-west-1)均要求使用Signature Version 4,显式指定签名版本可避免SDK默认配置差异引发的签名问题。

内容的提问来源于stack exchange,提问作者Itay Tur

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:40:50