使用角色而不是密钥在s3中获取签名的url,但未返回任何内容,也没有错误

时间:2018-12-04 01:55:27

标签: amazon-web-services amazon-s3 bucket pre-signed-url

我尝试是否使用访问密钥,它可以正常工作,但是我试图获取访问密钥并改为使用角色,但是一旦获得访问密钥,我就尝试了。我得到的回报是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,所以这意味着我的角色正确吗?

在此先感谢您的任何建议/帮助。

1 个答案:

答案 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);
});