所以,这是场景。我有一个网站,允许您对文件执行某些操作,大约需要几秒。我不希望客户端在服务器返回响应之前必须等待那么久,所以我们现在就拥有它是
目前这些文件存储在我的ec2服务器中,但我想将其移至S3。我想知道这种流程是否可行。
服务器知道文件将被保存的内容以及文件实际存在的位置,S3的情况也是如此?如果我事先知道所有信息(存储桶,文件名等),有没有办法知道文件URL?
答案 0 :(得分:0)
所有S3对象网址都遵循模式,因此很容易知道网址将提前。
如果存储桶名称符合DNS(除了美国标准以外的所有地区都需要),那么它将如下所示:
<bucket>.s3.amazonaws.com/<object-path>
美国标准区域的存储桶名称规则(它们不是必需符合DNS标准)稍微宽松一些,所以有些可能如下所示:
s3.amazonaws.com/<bucket>/<object-path>
因此,如果您的存储桶名称符合DNS标准(例如example
),并且您的文件为abc/123/file.txt
,那么您的对象网址将为:
example.s3.amazonaws.com/abc/123/file.txt
因此,如果您的存储桶名称不符合DNS(例如EXAMPLE_123
),而您的文件为abc/123/file.txt
,则您的对象网址将为:
s3.amazonaws.com/EXAMPLE_123/abc/123/file.txt
以下是官方PHP SDK中符合DNS的逻辑示例。
https://github.com/aws/aws-sdk-php/blob/master/src/Aws/S3/S3Client.php#L293-L317