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
AWS/Node.js S3签名URL被拒绝_Node.js_Amazon S3 - Fatal编程技术网

AWS/Node.js S3签名URL被拒绝

AWS/Node.js S3签名URL被拒绝,node.js,amazon-s3,Node.js,Amazon S3,我正在使用Amazon的Node.jsaws sdk为数字产品下载创建过期的预签名S3 URL,并努力解决这个问题。我已经成功地用我的密钥配置了SDK,并且在收集签名URL时尝试了同步方法(未显示)和异步方法(显示)。这些调用工作正常,我从未遇到任何错误,并且成功地返回了已签名的URL。这里是一个转折点:我得到的网址不工作 const promises = skus.map(function(sku) { const key = productKeys[sku]; return new

我正在使用Amazon的Node.js
aws sdk
为数字产品下载创建过期的预签名S3 URL,并努力解决这个问题。我已经成功地用我的密钥配置了SDK,并且在收集签名URL时尝试了同步方法(未显示)和异步方法(显示)。这些调用工作正常,我从未遇到任何错误,并且成功地返回了已签名的URL。这里是一个转折点:我得到的网址不工作

const promises = skus.map(function(sku) {
  const key = productKeys[sku];
  return new Promise((resolve, reject) => {
    s3.getSignedUrl('getObject', {
      Bucket: 'my-products',
      Key: key,
      Expires: 60 * 60 * 24, // Time in seconds; 24 hours
    }, function(err, res) {
      if (err) {
        reject(err);
      } else {
        resolve({
          text: productNames[sku],
          url: res,
        });
      }
    });;
  });
});
我认为这是我分配的密钥的一个错误,我分配给了一个拥有完整S3存储桶访问权限的IAM用户。因此,我尝试使用根级别的密钥对,得到了相同的拒绝访问结果。有趣的是:我得到的URL采用了
https://my-bucket.s3.amazonaws.com/Path/To/My/Product.zip?AWSAccessKeyId=blahblahMyKey&Expires=43914919&Signature=blahblahmysig&x-amz安全令牌=hugelongstring
。我以前从未见过这个
x-amz-security-token
东西,如果我尝试删除该查询参数,我会被拒绝访问,但原因不同:AWSAccessKeyId与我的任何帐户都没有关联。它不是我配置SDK时使用的,也不是我在S3帐户上分配的。不知道它来自何处,也不知道它与
x-amz-security-token
param的关系


不管怎样,我被难住了。我只是想要一个工作预签名的网址。。。有什么好处?谢谢你的帮助。

Hi@nc91。你找到解决办法了吗?我也有同样的问题。嗨@NC91。你找到解决办法了吗?我也有同样的问题。