问题描述
我想创建一个将使用 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 部分)。