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)软件包并将其配置为连接到我的Google云端存储而不是AWS S3?
我尝试过以下代码:
<?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');
但是这给了我一个错误:
致命错误:未捕获Aws \ S3 \ Exception \ InvalidAccessKeyIdException:AWS错误代码:InvalidAccessKeyId,状态代码:403,AWS请求ID:BF7C1317719A4C67,AWS错误类型:客户端,AWS错误消息:您提供的AWS访问键ID在我们的记录中不存在。,User-Agent:aws-sdk-php2 / 2.6.15 Guzzle / 3.9.2 curl / 7.32.0 PHP / 5.5.4-1 + debphp.org~raring + 1在/ var /中抛出第91行的www / prudhub / dev / vendor / aws / aws-sdk-php / src / Aws / Common / Exception / NamespaceExceptionFactory.php
任何人都知道如何或者我是否可以正确设置aws / aws-sdk-php软件包以连接到Google云端存储?
修改
以下是使其有效的代码:
<?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');
答案 0 :(得分:7)
endpoint
是错误的密钥。它应该是base_url
。
http://docs.aws.amazon.com/aws-sdk-php/guide/latest/configuration.html#setting-a-custom-endpoint