将aws / aws-sdk-php与Google云端存储配合使用
作者:互联网
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');
但这给了我一个错误:
Fatal error: Uncaught Aws\S3\Exception\InvalidAccessKeyIdException: AWS Error Code: InvalidAccessKeyId, Status Code: 403, AWS Request ID: BF7C1317719A4C67, AWS Error Type: client, AWS Error Message: The AWS Access Key Id you provided does not exist in our records., 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 thrown in /var/www/prudhub/dev/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/NamespaceExceptionFactory.php on line 91
任何人都知道如何或者我是否可以正确设置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');
解决方法:
端点是错误的密钥.它应该是base_url.
http://docs.aws.amazon.com/aws-sdk-php/guide/latest/configuration.html#setting-a-custom-endpoint
标签:php,google-cloud-storage,amazon-web-services,amazon-s3,aws-sdk 来源: https://codeday.me/bug/20190728/1561406.html