将aws/aws-sdk-php与谷歌云存储结合使用



谷歌云存储(与谷歌硬盘不同)似乎与S3 API兼容:

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

有人知道我是否可以使用aws/aws-sdk-php吗(https://packagist.org/packages/aws/aws-sdk-php)打包并配置它以连接到我的谷歌云存储,而不是AWS S3?

我已经尝试了以下代码:

<?php 
use AwsS3S3Client;
use LeagueFlysystemFilesystem;
use LeagueFlysystemAdapterAwsS3 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.615 Guzzle/3.9.2 curl/7.32.0 PHP/5.5.4-1+debphp.org~raring+1在第91行上的/var/www/prudhub/dev/vendor/aws/aws-sdk-PHP/src/aws/Common/Exception/NamespaceExceptionFactory.PHP中抛出

有人知道我如何或是否可以正确设置aws/aws-sdk-php包来连接到谷歌云存储吗?

编辑

以下是使其工作的代码:

<?php 
use AwsS3S3Client;
use LeagueFlysystemFilesystem;
use LeagueFlysystemAdapterAwsS3 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');

endpoint是错误的键。它应该是base_url

http://docs.aws.amazon.com/aws-sdk-php/guide/latest/configuration.html#setting-a自定义端点

最新更新