【发布时间】:2020-10-18 03:39:56
【问题描述】:
我正在关注 Trivikr 的 proposed solution 添加对 s3.getSignedUrl api 的支持,该 API 目前在较新的 v3 中不可用。我正在尝试创建一个签名的 url 来从存储桶中获取一个对象。
为方便起见,代码添加如下:
const { S3, GetObjectCommand } = require("@aws-sdk/client-s3"); // 1.0.0-gamma.2 version
const { S3RequestPresigner } = require("@aws-sdk/s3-request-presigner"); // 0.1.0-preview.2 version
const { createRequest } = require("@aws-sdk/util-create-request"); // 0.1.0-preview.2 version
const { formatUrl } = require("@aws-sdk/util-format-url"); // 0.1.0-preview.1 //version
const fetch = require("node-fetch");
(async () => {
try {
const region = "us-east-1";
const Bucket = `SOME_BUCKET_NAME`;
const Key = `SOME_KEY_VALUE`;
const credentials = {
accessKeyId: ACCESS_KEY_HERE,
secretAccessKey: SECRET_KEY_HERE,
sessionToken: SESSION_TOKEN_HERE
};
const S3Client = new S3({ region, credentials, signatureVersion: 'v4' });
console.log('1'); // for quick debugging
const signer = new S3RequestPresigner({ ...S3Client.config });
console.log('2')
const request = await createRequest(
S3Client,
new GetObjectCommand({ Key, Bucket })
);
console.log('3');
let signedUrl = formatUrl(await signer.presign(request));
console.log(signedUrl);
let response = await fetch(signedUrl);
console.log("Response", response);
}catch(e) {
console.error(e);
}
我成功创建了S3Client 和signer,但是在创建request 时,出现以下错误:
clientStack.concat(...).filter 不是函数
我做错了什么?
另请注意,我使用webpack 进行捆绑
【问题讨论】:
标签: amazon-web-services amazon-s3 aws-sdk-js aws-sdk-nodejs