首页 > 解决方案 > S3 预签名 URL 的格式

问题描述

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

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

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

网址是https://myBucketName.s3.amazonaws.com/myAudioFile.mp3 ...

但我认为它应该显示:

网址是https://s3.amazonaws.com/myBucketName/myAudioFile.mp3 ...

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

过去使用这种方法可以正常工作。AWS 开发工具包是否已更改?

标签: javascriptamazon-web-servicesamazon-s3

解决方案


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

AWS 签名 URL 的格式为:

  1. https://
  2. bucketName假如。这是Bucket
  3. .s3.amazonaws.com/
  4. fileName假如。这是Key

由于我们无法更改 AWS 提供的编码或 URL 或功能的格式,因此更重要的是格式是URL 是否执行您希望它执行的操作?此 URL 是否能够下载 s3 文件并在 60 秒后过期?

请通过 AWS 签名 URL关注这些文档。


推荐阅读