我尝试是否使用访问密钥,它可以正常工作,但是我试图获取访问密钥并改为使用角色,但是一旦获得访问密钥,我就尝试了。我得到的回报是www.aws.amazon.com
const AWS = require('aws-sdk');
const s3 = new AWS.S3();
const params = {Bucket: config.bucket, Expires: config.time, Key};
const url = s3.getSignedUrl('getObject', params);
console.log('The URL is', url);
我什至通过进入ec2并运行cli命令aws s3 presign s3://bucket/path/file
来确保我的角色设置正确,尽管可以正常工作,但我得到了签名的url,所以这意味着我的角色正确吗?
在此先感谢您的任何建议/帮助。
答案 0 :(得分:1)
使用IAM角色时,不能同步使用getSignedUrl()
。
注意:如果同步调用此方法(没有回调),则必须确保您具有静态或先前解析的凭据,否则它可能无法正确签名请求。如果您不能保证这一点(使用的是异步凭据提供程序,即EC2 IAM角色),则应始终使用异步回调调用此方法。
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrl-property
s3.getSignedUrl('getObject', params, function (err, url) {
console.log('The URL is', url);
});