我正在使用IAM角色从我的EC2实例访问S3。但在我的应用程序中,我创建了一个用于下载文件的签名URL。但是,当用户尝试下载文件时,它会显示访问被拒绝错误。
var AWS = require('aws-sdk');
var s3 = new AWS.S3();
//key=file path
var params = {Bucket: bucket, Key: prefix+'/'+key, Expires: 240}
var url = s3.getSignedUrl('getObject', params)
console.log(req.cookies.s, 'got', url) // expires in 60 seconds
res.redirect(url)
答案 0 :(得分:4)
您提供签名网址并导致Access Denied
错误的事实表明签名网址无效。
一些可能的原因:
Access Denied
建议这样做,而不是显示与签名网址相关的错误)答案 1 :(得分:0)
感谢@john的回答指出Access Denied
的主要问题是签名的URL无效。
我想添加另一件事,以帮助解决此问题。 即使您没有正确的存储桶凭据,您仍然可以生成签名的URL !
这就是让我陷入困境的地方,因为我不认为我成功生成URL时的凭据不正确。