本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon S3 多区域客户端与 AWS SDK for PHP 版本 3

AWS SDK for PHP版本 3 提供一种通用的多区域客户端,可用于任何服务。它支持用户为任何命令提供 @region 输入参数,以指定向哪个 AWS 区域发送命令。此外,开发工具包为 Amazon S3 提供的多区域客户端可针对特定的 Amazon S3 错误智能响应,并据此重新路由命令。它支持用户使用同一客户端与多个区域通信。对于Amazon S3 Stream Wrapper 与适用于 PHP 的 AWS 开发工具包版本 3 的用户而言,这是特别有用的功能,因为存储桶驻留在多个区域中。

基本用法

无论使用标准 S3 客户端还是多区域客户端,Amazon S3 客户端的基本用法模式是相同的。在命令级别,唯一的用法区别是可使用 @region 输入参数指定 AWS 区域。

// Create a multi-region S3 client

$s3Client = (new \Aws\Sdk)->createMultiRegionS3(['version' => 'latest']);

// You can also use the client constructor

$s3Client = new \Aws\S3\S3MultiRegionClient([

'version' => 'latest',

// Any Region specified while creating the client will be used as the

// default Region

'region' => 'us-west-2',

]);

// Get the contents of a bucket

$objects = $s3Client->listObjects(['Bucket' => $bucketName]);

// If you would like to specify the Region to which to send a command, do so

// by providing an @region parameter

$objects = $s3Client->listObjects([

'Bucket' => $bucketName,

'@region' => 'eu-west-1',

]);

重要

如果使用多区域 Amazon S3 客户端,您不会遇到永久性的重定向异常。如果命令发送到错误的区域,标准 Amazon S3 客户端会引发 Aws\S3\Exception\PermanentRedirectException 的实例。而多区域客户端会将该命令分派到正确的区域。

存储桶区域缓存

Amazon S3 多区域客户端会为给定存储桶驻留的 AWS 区域保留内部缓存。默认情况下,每个客户端都有它自己的内存中的缓存。要在客户端或进程之间共享缓存,请提供

Aws\CacheInterface 的一个实例,作为多区域客户端的 bucket_region_cache 选项。

use Aws\DoctrineCacheAdapter;

use Aws\Sdk;

use Doctrine\Common\Cache\ApcuCache;

$sdk = new Aws\Sdk([

'version' => 'latest',

'region' => 'us-west-2',

'S3' => [

'bucket_region_cache' => new DoctrineCacheAdapter(new ApcuCache),

],

]);

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐