【问题标题】:Not able to generate the pre signed url for aws s3无法为 aws s3 生成预​​签名 URL
【发布时间】:2020-06-06 11:52:24
【问题描述】:

我使用以下代码在javascript中使用aws sdk生成预签名的url。

const aws = require("aws-sdk");
const s3 = new aws.S3();
AWS.config.update({
    accessKeyId: "generated access key",
    secretAccessKey: "generated secret key"
})

const s3_param = {
    Bucket: "bucket-name",
    Key: "file-name"
}

const signedUrl = s3.getSignedUrl("putObject", s3_param);
console.log(signedUrl);

这是给我undefined。如果我将回调作为 3ed 参数传递,它根本不会执行回调。我在这里错过了什么?

编辑

卸载aws-sdk 包并再次安装它对我有用。不知道为什么。

【问题讨论】:

  • 您创建了一个名为s3_param 的变量,但在对getSignedUrl() 的调用中,它指的是s3_params。这些是不同的变量名。
  • @JohnRotenstein 只是一个错字。我的错。

标签: javascript node.js amazon-web-services amazon-s3 aws-sdk-js


【解决方案1】:

我猜你创建了环境。项目根目录中的文件。然后为主机、用户和密码添加特定于环境的变量。

require('dotenv').load();
require('dotenv').config();
var AWS = require('aws-sdk');
var credentials = {
    accessKeyId: process.env.S3_ACCESS_KEY,
    secretAccessKey : process.env.S3_SECRET_KEY
};
AWS.config.update({credentials: credentials, region: 'eu-central-1'});
var s3 = new AWS.S3();

var presignedGETURL = s3.getSignedUrl('getObject', {
    Bucket: 'presignedurldemo',
    Key: 'ivana.jpg', 
    Expires: 60
});

这应该适用于使用 AWS S3 类创建 GET URL。

【讨论】:

  • 我不知道发生了什么,但卸载 aws-sdk 包并再次安装它对我有用。不过感谢您的回答。
猜你喜欢
  • 2016-12-14
  • 1970-01-01
  • 1970-01-01
  • 2019-12-14
  • 1970-01-01
  • 1970-01-01
  • 2023-01-19
  • 2019-03-11
  • 2018-02-02
相关资源
最近更新 更多