3

Google クラウド ストレージ (Google ドライブとは異なります) は、S3 API と互換性があるようです。

https://developers.google.com/storage/docs/migrating#migration-simple

aws/aws-sdk-php ( https://packagist.org/packages/aws/aws-sdk-php ) パッケージを使用して、AWS S3 の代わりに Google Cloud Storage に接続するように構成できるかどうかを知っている人はいますか?

次のコードを試しました:

<?php 
use Aws\S3\S3Client;
use League\Flysystem\Filesystem;
use League\Flysystem\Adapter\AwsS3 as Adapter;
require_once 'vendor/autoload.php';
error_reporting(E_ALL & ~E_NOTICE);
ini_set('display_errors', 1);


$client = S3Client::factory(array(
    'key'    => 'MY_GCS_KEY',
    'secret' => 'MY_GCS_SECRET',
    'endpoint' => 'storage.googleapis.com'
));
$filesystem = new Filesystem(new Adapter($client, 'MY_GCS_BUCKET'));
$filesystem->write('filename.txt', 'contents');

しかし、これは私にエラーを与えます:

致命的なエラー: Uncaught Aws\S3\Exception\InvalidAccessKeyIdException: AWS エラー コード: InvalidAccessKeyId、ステータス コード: 403、AWS リクエスト ID: BF7C1317719A4C67、AWS エラー タイプ: クライアント、AWS エラー メッセージ: 指定した AWS アクセス キー ID は存在しませんユーザーエージェント: aws-sdk-php2/2.6.15 Guzzle/3.9.2 curl/7.32.0 PHP/5.5.4-1+debphp.org~raring+1 throw in /var/www/prudhub /dev/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/NamespaceExceptionFactory.php 行 91

代わりに aws/aws-sdk-php パッケージを適切にセットアップして Google Cloud Storage に接続する方法を知っている人はいますか?

編集

これを機能させたコードは次のとおりです。

<?php 
use Aws\S3\S3Client;
use League\Flysystem\Filesystem;
use League\Flysystem\Adapter\AwsS3 as Adapter;
require_once 'vendor/autoload.php';


$client = S3Client::factory(array(
    'key'    => 'MY_GCS_KEY',
    'secret' => 'MY_GCS_SECRET',
    'base_url' => 'https://storage.googleapis.com'
));
$filesystem = new Filesystem(new Adapter($client, 'MY_GCS_BUCKET'));
$filesystem->write('filename.txt', 'contents');
4

1 に答える 1

7

endpoint間違ったキーです。である必要がありますbase_url

http://docs.aws.amazon.com/aws-sdk-php/guide/latest/configuration.html#setting-a-custom-endpoint

于 2014-08-31T20:19:04.730 に答える