【问题标题】:AWS - Requests specifying Server Side Encryption with AWS KMS managed keys require AWS Signature Version 4AWS - 使用 AWS KMS 托管密钥指定服务器端加密的请求需要 AWS 签名版本 4
【发布时间】:2022-10-23 17:09:39
【问题描述】:

服务器应用程序:节点 + S3 集成。

使用包aws-sdk

S3.getSignedUrl({Bucket, Key, Expires}) 的响应中得到错误。

响应错误:

Requests specifying Server Side Encryption with AWS KMS managed keys 
require AWS Signature Version 4

代码

export const platformS3 = new S3({
  region: process.env.PLATFORM_S3_REGION,
});

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 };
};

如何解决错误?

【问题讨论】:

    标签: node.js amazon-web-services amazon-s3


    【解决方案1】:

    解决方案在这里找到:https://github.com/aws/aws-sdk-js/issues/1970

    signatureVersion: 'v4' 添加到S3 客户端初始化。

    代码

    const platformS3 = new S3({
      signatureVersion: 'v4', <--
      region: process.env.PLATFORM_S3_REGION,
    });
    

    【讨论】:

      猜你喜欢
      • 2022-11-08
      • 2021-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-16
      • 2017-09-14
      • 2021-08-06
      • 1970-01-01
      相关资源
      最近更新 更多