0

我正在尝试使用 Amazon S3 来存储我的图像。到目前为止我所做的是通过 PEAR 安装 AWS SDK(链接:http ://docs.aws.amazon.com/aws-sdk-php-2/guide/latest/installation.html ://docs.aws.amazon.com/aws-sdk-php-2/guide/latest/installation.html )

然后我进入第二步,创建一个客户端:

<?php

// Include the SDK using the Composer autoloader
require 'vendor/autoload.php';

use Aws\S3\S3Client;

// Instantiate the S3 client with your AWS credentials and desired AWS region
$client = S3Client::factory(array(
    'key'    => 'your-aws-access-key-id',
    'secret' => 'your-aws-secret-access-key',
));

我的钥匙设置正确......

然后我想通过创建这样的存储桶来测试所有这些:

$bucket = 'my-bucket';
try{
    $result = $client->createBucket(array(
        'Bucket' => $bucket
    ));

    // Wait until the bucket is created
    $client->waitUntil('BucketExists', array('Bucket' => $bucket));
}
catch(Exception $e){
    var_dump($e->getMessage());
}

但我总是得到这个错误:

请求的存储桶名称不可用。存储桶命名空间由系统的所有用户共享。请选择其他名称,然后重试。

我认为我的 SDK 没有正确安装......谁能帮我解决这个问题?我正在使用 vagrant,所以我使用以下命令在我的根文件夹中安装了 AWS SDK:

sudo pear -D auto_discover=1 install pear.amazonwebservices.com/sdk

我收到安装正常的消息。

我还对我的 $client 做了一个 var_dump。我的回复的链接:http
://pastebin.com/KqkEiKGs 如果您对此有兴趣,请不要现在...(我的钥匙被隐藏了)

4

1 回答 1

2

您的错误消息说明了 - 您正在尝试使用对您的存储桶不唯一的名称,您应该使用一些更唯一的名称。而且,是的,存储桶名称在所有 Amazon S3(不仅是您的账户)中必须是唯一的。

你可以在这里阅读更多关于它的信息。

于 2013-10-11T13:58:18.650 回答