AWS S3 JavaScript 开发工具包 getSignedUrl 仅返回基本路径



我有一些非常简单的代码来生成S3 URL。 我从开发工具包返回的 URL 只有 S3 的基本路径。 它不包含任何其他内容。 为什么会这样?

var AWS = require('aws-sdk');
var s3 = new AWS.S3();
console.log(s3.getSignedUrl('getObject', {
  Bucket: 'test',
  Key: 'test'
}));
// Returns "https://s3.amazonaws.com/"

节点.js v0.12.0、AWS 开发工具包 2.1.15 或 2.1.17、Windows 7 64 位、

问题不在于代码。 事实证明,当您没有在您的环境中正确设置 AWS 凭证时,AWS 开发工具包不会抱怨。 修复 ~/.aws/credentials 中的凭据解决了该问题。

我遇到了同样的问题。

我插入了一个正确的访问令牌,但有些请求只收到基本路径,而有些请求收到普通 URL。

当我将getSignedUrl修改为await getSignedUrlPromise时,我能够获得正确的 URL。

我也有同样的问题。我通过更改以下内容获得了正确的输出

AWS_Access_Key_Id = myaccesskeyaws_access_key_id=myaccesskey

密钥也是如此。这意味着您不应该使用大写,并且在=之前和之后没有空格

跟踪您的问题,无论您的存储桶是否存在具有正确的权限,和/或凭证在您的 ~/.aws/credentials 文件中是否正确,还是任何其他与 AWS 访问相关的问题。我只是根据文档使用了(头桶)操作。

参考: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrlPromise-property

要以编程方式实现此目的,请执行以下操作:

/* This operation checks to see if a bucket exists. Put into aws.ts files*/
var params = {
    Bucket: "acl1"
};
s3.headBucket(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else     console.log(data);           // successful response
});

同时回调:

var params = {
  Bucket: 'STRING_VALUE', /* required */
  ExpectedBucketOwner: 'STRING_VALUE'  /* the owner's aws account id */
};
s3.headBucket(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

这将引发如下异常:

例如 => 凭据错误:如果使用AWS_CONFIG_FILE,则配置中缺少凭据...

最新更新