首页 > 解决方案 > 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);
            }

        });

    });
};

标签: javascriptamazon-s3

解决方案


推荐阅读