我是AWS新手。据我了解,S3传输加速使用Cloudfront边缘进行最快上传,但我无法找到适合PHP API的文档,用于将对象上传到启用传输加速的存储桶中。 我的代码:
use Aws\S3\S3Client;
$S3_Client = new S3Client([
'version' => 'latest',
'region' =>'ap-south-1',
'credentials' => [
'key' => 'Accesskey',
'secret' => 'Secretkey',
],
'endpoint' => 'http://my_bucket_name.s3-accelerate.amazonaws.com'
]);
$bucket = 'my_bucket_name';
$key = 'EC2.pdf';
$SourceFile = '/path/to/the/file/EC2.pdf';
$put = $S3_Client->putObject([
'Bucket' => $bucket,
'Key' => $key,
'SourceFile' => $SourceFile
]);
我收到以下错误
The authorization header is malformed;
the region 'ap-south-1' is wrong; expecting 'us-east-1'
但当我将区域更改为
时,我的水桶位于us-east-1us-east-1
我收到以下错误:
The specified bucket does not exist
答案 0 :(得分:3)
而不是endpoint => ...
,将'use_accelerate_endpoint' => True
传递给constructor。
在构建发送到S3的请求时,有许多不同的规则可以发挥作用。 endpoint
选项提供服务端点,而不是存储桶端点,并且非常适用于非标准配置。
答案 1 :(得分:0)
这可能与此讨论有关:https://github.com/hashicorp/terraform/issues/2774
尝试以下解决方案 - “我遇到了同样的问题,我之前创建了这个存储桶并将其删除了。我更改了名称并且没有应用任何问题。”