0

我有一个脚本可以完美地将文件上传到存储桶中。但是,已经为一个特定的存储桶指定了一个 cname,以便可以直接访问它,显然它是使用 CloudFront 分配的。

我不是该领域的专家,但基本上,不是通过以下方式访问存储桶:http: //mybucket.mysite.com.s3.amazonaws.com/thing.txt,而是允许您通过以下方式访问它: http:// /mybucket.mysite.com/thing.txt

它看起来很好,当我对回调进行响应时,它说一切都完成了,但是数组中的最后一个元素交换了存储桶和端点,所以它看起来像这样:https:// s3.amazonaws.com/mybucket.mysite.com/thing.txt

但是,当我使用任何其他存储桶时,它会正确上传并返回正确的 ObjectURL。

在谷歌和这个网站上进行了搜索,我似乎无法找到解决方案,所以任何帮助都会很神奇。

我正在使用旧版本的 AWS PHP 2 sdk,目前使用的是 2.2.1。

编辑:更奇怪的是,当我通过 isValidBucketName 方法传递存储桶时,它返回 true。

4

1 回答 1

0

以防万一其他人遇到此问题,问题是在执行 put 时,SDK 会自动假定您正在尝试连接到美国地区的存储桶。所以我需要指定存储桶所在的区域,在我的例子中是 EU_WEST_1,所以当你设置你的配置数组时,一定要提供这个值,例如。

$config = array(
    'key' => 'your-key'
,   'secret' => 'your-secret'
,   'region' => Region::EU_WEST_1
);

确保在类中包含 Aws\Common\Enum\Region。

于 2013-08-21T09:12:23.537 回答