Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 无法从Amazon S3下载文件_Amazon Web Services_Amazon S3 - Fatal编程技术网

Amazon web services 无法从Amazon S3下载文件

Amazon web services 无法从Amazon S3下载文件,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,我使用以下代码从Amazon S3下载图像: router.post('/image-upload', function (req, res, next) { if (!req.files) return res.status(400).send('No files were uploaded.'); var file = req.files['image_' + req.session.sessID]; AWS.config.loadFromPa

我使用以下代码从Amazon S3下载图像:

 router.post('/image-upload', function (req, res, next) {

    if (!req.files)
        return res.status(400).send('No files were uploaded.');

    var file = req.files['image_' + req.session.sessID];

    AWS.config.loadFromPath(<credentials_path>);

    var s3 = new AWS.S3();

    var params = {Bucket: credentials.aws_s3.bucket_name, Key: req.session.email, Body: file.data};

    s3.putObject(params, function(err, data) {

        if (err) {
            console.log(err)

        } else {

            var options = {
                Bucket: credentials.aws_s3.bucket_name,
                Key: req.session.email
            };

            var url = s3.getSignedUrl('getObject', options);
            console.log(url);

        }
    });
});
但是,当我尝试在浏览器中打开此链接时,出现以下错误:

<Error>
<Code>AuthorizationQueryParametersError</Code>
<Message>
Query-string authentication version 4 requires the X-Amz-Algorithm, X-Amz-Credential, X-Amz-Signature, X-Amz-Date, X-Amz-SignedHeaders, and X-Amz-Expires parameters.
</Message>
<RequestId>29819210D89C8877</RequestId>
<HostId>
aPpmRMYB7QCog4UDqs1j2rCdY3cy5H8u3kGE8nv2qXF6Y2iATPNquz+MQNdvr3zZ1ceRydRplq0=
</HostId>
</Error>
我无法理解为什么会出现此错误,因为返回的url具有所有必需的查询参数。有人能帮忙吗

注意:如果同步调用此方法(没有回调),则必须确保您具有静态凭据或以前解析的凭据,否则它可能无法正确签署请求。如果不能保证这一点(您使用的是异步凭据提供程序,即EC2 IAM角色),则应始终使用异步回调调用此方法

请尝试在方法回调函数中检索已签名的url

s3.getSignedUrl('getObject', options, function(err, url) {
  console.log(url);
});

您能否提供更多的代码,以便我们了解您是如何创建
s3
对象的?你使用哪种语言?@JohnRotenstein我已经添加了完整的代码。我正在使用Node-Express。我想做的是将存储在S3中的图像的url发送到javascript并在网页上显示图像。url似乎具有所需的参数,但
&s不应该在那里。查询字符串参数用
&
分隔,此xml转义形式无效。不清楚这是从哪里来的。
s3.getSignedUrl('getObject', options, function(err, url) {
  console.log(url);
});