使用PHP将对象上传到传输加速S3存储桶

时间:2018-03-12 09:10:48

标签: php amazon-web-services amazon-s3 aws-sdk

我是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-1
us-east-1

我收到以下错误:

The specified bucket does not exist

2 个答案:

答案 0 :(得分:3)

而不是endpoint => ...,将'use_accelerate_endpoint' => True传递给constructor

在构建发送到S3的请求时,有许多不同的规则可以发挥作用。 endpoint选项提供服务端点,而不是存储桶端点,并且非常适用于非标准配置。

答案 1 :(得分:0)

这可能与此讨论有关:https://github.com/hashicorp/terraform/issues/2774

尝试以下解决方案 - “我遇到了同样的问题,我之前创建了这个存储桶并将其删除了。我更改了名称并且没有应用任何问题。”