javascript - Amazon S3:getSignedUrl:“参数中缺少必需的密钥‘Bucket’”
问题描述
在这里挣扎了两天。我对javascript和AWS有点陌生,所以任何提示都会不胜感激。
我有 11 个桶。除了这个,其他的都很好。
当我传入另一个存储桶名称和键值时,它可以工作,但是当我传入我需要的那个时,我得到错误:“参数中缺少必需的键 'Bucket'”。
例如:如果我传入bucket:'businesspicture',它就成功加载了我需要的图片。
$scope.$watch("userInfo.picture", function (imageValue) {
var defaultIcon = '/images/defaultuser.jpg';
if (imageValue !== defaultIcon && !imageValue.startsWith("https://")) {
pictureServices.picture.getPictureFromS3({
fileName: imageValue,
bucket: "userpicture"
}, {}, function (pic) {
$scope.iconPreviewImage = pic.url;
$scope.userInfo.picture = imageValue;
}, function (error) {
dialogService.showNgResourceError(error);
});
}
});
图片服务.js。
var AWS = require('aws-sdk');
AWS.config.loadFromPath('../s3_config.json');
var photoBuckets = new AWS.S3();
exports.getPictureFromS3 = function(fileName, bucketName) {
return new Promise(function(resolve, reject){
var params = {
Bucket: bucketName,
Key: fileName
};
photoBuckets.getSignedUrl('getObject', params, function(err, url){
if(err){
reject(err);
} else{
awsurl = {url:url};
resolve(awsurl);
}
});
});
};
解决方案
推荐阅读
- laravel - 如何解决创建 laravel 新项目的错误?
- node.js - 保护从第三方服务(不签署请求)接收回调的 POST 路由的正确方法是什么。
- java - Activity完成后如何在后台运行计时器然后再次继续
- here-api - 西班牙的错误 TimeZoneOffset 与反向地理编码 Here API
- visual-studio - 从代理或客户端运行数据表的 Specflow 测试在 Azure 管道 VS 测试任务上失败
- dialogflow-es - 数据总是转到对话框流中的相同参数
- sql-server - 数据类型 varchar 和 varbinary 在 add 运算符中不兼容
- java - Opengl ES 3.0 中的多重纹理和标签
- flutter - 如何在 Flutter 中使用 RadioListTile 作为 DropDownMenuItem 的项目
- python - 我正在使用 discord.py Rewrite 制作一个机器人,并且检查出现错误,不断返回