【问题标题】:Format of S3 pre-signed URLsS3 预签名 URL 的格式
【发布时间】:2021-01-19 03:47:48
【问题描述】:

我正在尝试在我的 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...

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

过去使用这种方法可以正常工作。 AWS 开发工具包是否发生了变化?

【问题讨论】:

  • 无论哪种方式都可以访问您的存储桶。这会导致问题吗?
  • 请注意,bucket.s3.amazonaws.com/cat.png 是虚拟托管样式的 URL,而 s3.amazonaws.com/bucket/cat.png 是路径样式的 URL。两者都有效。
  • 对于 us-east-1 中的存储桶有效。路径样式必须引用区域端点,否则,例如https://s3.us-east-3.amazonaws.com/example-bucket 为 us-east-2。
  • 您遇到的实际问题是什么?

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


【解决方案1】:

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

AWS 签名网址的格式为:

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

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

请关注这些docs over AWS signed URL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    相关资源
    最近更新 更多