在zend框架2中为AWS的不同服务设置不同的区域

时间:2015-07-04 06:56:51

标签: php amazon-web-services amazon-s3 zend-framework2

我正在使用 AWS 与php sdk for zf2并使用其两项服务,第一项是ses(邮件服务),另一项是S3服务。

我已经在不同地区提供这些服务,因此使用配置文件( aws.local.php ),我只能按默认值一次指定一个。

所以我想使用两个不同的区域,一个用于s3,一个用于ses。

  • 我该怎么做?

以下是我用于s3的示例代码。

 $aws= $this->getServiceLocator()->get('aws');
        $client = $aws->get('s3');

1 个答案:

答案 0 :(得分:0)

请参阅creating a client section of the AWS SDK for PHP docs。您可以使用AWS \ Sdk类中客户端对应的create方法创建客户端。请注意,createS3 factory method(和其他服务工厂方法)采用一组参数。所有服务客户端都接受的常见参数记录在the Aws\AwsClient::__construct() method documentation中。我们可以看到region是其中一个选项,因此您可以为各个服务指定区域,如下所示:

$myConfig = [
    'region'  => 'us-west-2',
];
// Create an Amazon S3 client using the shared configuration data.
$client = $sdk->createS3($myConfig);
根据要求获取PHP SDK v2信息的评论

编辑: 最适合您的方法是升级到最新版本的SDK。它是一个有很多改进的主要版本,因此我强烈建议您更新。 但是,使用v2,您可以使用相应的Web服务客户端的factory()方法执行类似操作。例如,对于S3,您可以使用以下内容:

$s3Client = S3Client::factory(array(
    'region'  => 'us-east-1',
));

AWS PHP SDK Quick Start topic有更多详情。