S3预签名URL的格式

时间:2018-10-25 17:56:22

标签: javascript amazon-web-services amazon-s3

我正在尝试使用以下代码在JavaScript代码中创建S3预签名URL:

var params = {Bucket: 'myBucketName', Key: 'key', Expires: 60};
var url = s3.getSignedUrl('getObject', params);
console.log('The URL is ', url);

执行后,我的控制台日志显示:

  

URL为https://myBucketName.s3.amazonaws.com/myAudioFile.mp3 ...

但是我认为它应该显示:

  

URL为https://s3.amazonaws.com/myBucketName/myAudioFile.mp3 ...

为什么将S3存储桶名称放在URL中的“ s3.amazonaws.com”之前?

过去,使用此方法可以正常工作。 AWS SDK是否已更改?

2 个答案:

答案 0 :(得分:3)

这是AWS s3存储桶的signedURL格式。当AWS为getObjectputObject形成签名用户时,此格式保持不变。

AWS签名URL的格式为:

  1. https://
  2. 提供了
  3. bucketName。这是Bucket
  4. .s3.amazonaws.com/
  5. 提供了
  6. fileName。这是Key

由于我们无法更改AWS提供的编码或URL或函数的格式,因此,更重要的是 URL是否符合您的要求?此URL能够下载s3文件并在60秒后过期吗?

请遵循以下docs over AWS signed URL

答案 1 :(得分:-2)

他没有问任何关于 CloudFront 的问题。他询问如何像大多数人一样直接从 S3 存储桶访问文件。 CloudFront 不需要使用 S3,它们是不同的服务,但它们可以结合使用。