预签名 s3 文件时没有这样的存储桶错误

问题描述

我想创建一个将使用 AWS S3 进行存储的系统。我们希望文件不能在互联网上使用,但我们希望能够共享它们。为了做到这一点,我们需要做一个presign。以附件 test_file.gsm 为例。 URL 为 https://bender-family.s3.amazonaws.com/test_file.gsm,S3 路径为 s3://bender-family.s3.amazonaws.com/test_file.gsm。如果我尝试使用 aws s3 presign s3://bender-family.s3.amazonaws.com/test_file.gsm 对其进行预签名,我会返回:

root@server2:~# aws s3 presign  s3://bender-family.s3.amazonaws.com/test_file.gsm
https://s3.amazonaws.com/bender-family.s3.amazonaws.com/test_file.gsm?AWSAccessKeyId=(aws access key here)&Signature=(signature here)&Expires=1624596709
root@server2:~# 

但是返回的 URL 不起作用。我收到 NoSuchBucket 错误

root@server2:~# curl 'https://s3.amazonaws.com/bender-family.s3.amazonaws.com/test_file.gsm?AWSAccessKeyId=(aws access key here)&Signature=(signature here)&Expires=1624596709'
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>NoSuchBucket</Code><Message>The specified bucket does not exist</Message><BucketName>bender-family.s3.amazonaws.com</BucketName><RequestId>J9PMQAXV49P011B2</RequestId><HostId>(HostID Here)</HostId></Error>root@server2:~# 
root@server2:~# 

是不是我做错了什么?

如果需要,这里有 gsm 文件

https://filebin.net/io13mgvf92eayq36

解决方法

使用:

aws s3 presign  s3://bender-family/test_file.gsm

(没有 s3 部分)。