代码之家  ›  专栏  ›  技术社区  ›  Tsuna

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

  •  1
  • Tsuna  · 技术社区  · 7 年前

    我尝试过,如果我使用访问密钥,它可以正常工作,但我尝试使用访问密钥,并使用角色,但一旦我获得访问密钥。我得到的回报是 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);
    

    aws s3 presign s3://bucket/path/file 这很好,但我得到了签名的url作为回报,这意味着我的角色是正确的,不是吗?

    提前感谢您的建议/帮助。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Michael - sqlbot    7 年前

    你不能用 getSignedUrl() 使用IAM角色时同步。

    注意:如果同步调用此方法(没有回调),则必须确保您具有静态凭据或以前解析的凭据,否则它可能无法正确签署请求。如果不能保证这一点(您使用的是异步凭据提供程序,即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);
    });