Amazon S3:getSignedUrl:“参数中缺少必需的键'Bucket'”

时间:2018-06-19 15:35:05

标签: javascript amazon-s3

在这里奋斗了两天。我是javascript和AWS的新手,所以任何提示都将不胜感激。

我有11个水桶。除此以外,其他人都可以正常工作。

当我传入另一个存储桶名称和键值时,它可以工作,但是当我传入一个我需要的存储桶名称和键值时,会出现错误:“在参数中缺少所需的键'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);
        });
    }
});

pictureService.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);
            }

        });

    });
};

0 个答案:

没有答案