当前位置: 首页 > 知识库问答 >
问题:

将aws/aws sdk php与Google云存储结合使用

宋琛
2023-03-14

谷歌云存储(与谷歌硬盘不同)似乎与S3应用编程接口兼容:

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

有人知道我是否可以使用aws/aws-sdk-php(https://packagist.org/packages/aws/aws-sdk-php)包并将其配置为连接到我的谷歌云存储而不是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\InvalidAccessKeyId异常: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抛出/var/www/prudhub/dev/vendor/aws/aws-sdk-PHP/src/aws/Common/Exception/NamespaceExceptionFactory.PHP,第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');

共有1个答案

东方海
2023-03-14

endpoint是错误的键。应该是base_url

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

 类似资料:
  • -SSL-灵活 然而,错误仍然存在。有什么想法吗?

  • 我有一个webapp,用户通过Firebase Auth进行匿名身份验证。我将来自用户的图像存储在Firebase存储中,Firebase存储在后台由谷歌云存储桶支持。当我试图从客户端javascript使用Google Cloud Vision API来获取图像属性时,我得到了一个权限错误。 如果我把这张照片公之于众,一切都会好起来。但这是用户数据,不能公开。我该怎么解决这个问题? 我调用vis

  • 问题内容: 谁能给我指出一个完整的示例,而 不是 在App Engine上使用OAuth2和Flask对Google帐户进行身份验证? 我试图让用户授予对Google日历的访问权限,然后使用该访问权限从日历中检索信息并对其进行进一步处理。我还需要存储并稍后刷新OAuth2令牌。 我看过Google的oauth2client库,可以开始检索授权代码了,但是我从那里有点迷失了。通过查看Google的O

  • 我在谷歌云存储桶中有文件。 如何将这些文件设置为Cloudflare CDN的原点? (Cloudflare控制面板似乎只想要根域上的网站...?)

  • 我打算将包含所有文件和目录的整个目录从一个谷歌云存储桶递归复制到另一个谷歌云存储桶。 从本地到Google云存储桶,以下代码运行良好: 如何在同一个项目中将目录从一个bucket递归复制到另一个bucket?

  • 我正在尝试建立一个基于python的基本谷歌应用引擎站点,允许用户将文件上传到谷歌云存储(主要是图像) 我已经阅读了JSON API和GCS客户端库概述(以及blobstore等)的文档,但仍然没有很好地了解哪种方法是最好的以及它们之间的关系。如果有人能概述一下,或者给我指出一些我可以查看的资源,那就太好了 此外,任何相关的示例代码都会非常有用。我已经能够在此处运行上载示例,但不确定它们是否对应用