reliv / aws-sdk-php-zf2-zf3fc
Zend Framework 2 模块,允许轻松集成 AWS SDK for PHP
Requires
- php: >=5.3.3
- aws/aws-sdk-php: 2.*
- zendframework/zend-filter: 2.*
- zendframework/zend-servicemanager: 2.* || 3.*
- zendframework/zend-session: 2.*
- zendframework/zend-version: 2.*
- zendframework/zend-view: 2.*
Requires (Dev)
- phpunit/phpunit: 3.7.*
- zendframework/zend-modulemanager: 2.*
This package is auto-updated.
Last update: 2024-09-18 03:32:38 UTC
README
简介
本模块提供了一个简单的包装器,用于 AWS SDK for PHP。它将 AWS 服务构建器注册为 ZF2 服务管理器中的一个服务,使其在您的应用程序的任何位置都易于访问。
安装
使用 Composer 在应用程序的 vendor 目录中安装模块。将以下行添加到您的 composer.json
。这将同时安装 AWS SDK for PHP。
{ "require": { "aws/aws-sdk-php-zf2": "1.2.*" } }
配置
在您的 application.config.php
文件中启用模块。
return array( 'modules' => array( 'Aws' ) );
将 aws.local.php.dist
文件复制并粘贴到您的 config/autoload
文件夹中,并使用您的凭证和其他配置设置进行自定义。请确保从您的文件中删除 .dist
。您的 aws.local.php
可能看起来像以下内容
<?php return array( 'components' => array( 'rcm' => array( 'AwsComponent' => array( 'key' => '<your-aws-access-key-id>', 'secret' => '<your-aws-secret-access-key>', 'region' => 'us-west-2' ) ) ) );
注意:如果您正在使用 IAM 实例配置文件凭证(也称为 IAM 实例角色),您可以省略您的
key
和secret
参数,因为它们将自动从 Amazon EC2 实例中获取。
使用方法
您可以从 ZF2 服务定位器可用的任何位置获取 AWS 服务构建器对象(例如控制器类)。以下示例实例化了 Amazon DynamoDB 客户端并在 DynamoDB 中创建了一个表。
public function indexAction() { $aws = $this->getServiceLocator()->get('aws'); $client = $aws->get('dynamodb'); $table = 'posts'; // Create a "posts" table $result = $client->createTable(array( 'TableName' => $table, 'KeySchema' => array( 'HashKeyElement' => array( 'AttributeName' => 'slug', 'AttributeType' => 'S' ) ), 'ProvisionedThroughput' => array( 'ReadCapacityUnits' => 10, 'WriteCapacityUnits' => 5 ) )); // Wait until the table is created and active $client->waitUntilTableExists(array('TableName' => $table)); echo "The {$table} table has been created.\n"; }
视图助手
从版本 1.0.2 开始,AWS SDK ZF2 模块现在提供了两个视图助手,用于生成 Amazon S3 和 Amazon CloudFront 资源的链接。
注意:这两个视图助手默认生成使用 HTTPS 方案的 URL。这对于安全性来说很理想,但请记住,Amazon CloudFront 对 HTTPS 请求收费更高。您可以通过调用任一助手的
setScheme
方法使用不同的方案(例如 HTTP)。
S3Link 视图助手
在您的视图中创建 S3 链接
<?php echo $this->s3Link('my-object', 'my-bucket');
可以通过使用 setDefaultBucket
方法全局设置默认存储桶
<?php $this->s3Link->setDefaultBucket('my-bucket'); echo $this->s3Link('my-object');
您还可以通过传递一个第三参数(即过期日期)创建私有内容的签名 URL
<?php echo $this->s3Link('my-object', 'my-bucket', '+10 minutes');
CloudFrontLink 视图助手
在您的视图中创建 CloudFront 链接
<?php echo $this->cloudFrontLink('my-object', 'my-domain');
可以通过使用 setDefaultDomain
方法全局设置默认域名
<?php $this->cloudFrontLink->setDefaultDomain('my-domain'); echo $this->cloudFrontLink('my-object');
您还可以通过传递一个第三参数(即过期日期)创建私有内容的签名 URL
<?php echo $this->cloudFrontLink('my-object', 'my-bucket', time() + 60);
过滤器
从版本 1.0.3 开始,AWS SDK ZF2 模块提供了一个简单的文件过滤器,允许直接上传到 S3。 S3RenameUpload
扩展了 RenameUpload
类,请参阅 其文档 以获取可用选项。
此过滤器仅添加一个选项来设置存储桶名称(通过 setBucket
方法或通过传递一个 bucket
键到过滤器的 setOptions
方法)。
$request = new Request(); $files = $request->getFiles(); // e.g., $files['my-upload']['tmp_name'] === '/tmp/php5Wx0aJ' // e.g., $files['my-upload']['name'] === 'profile-picture.jpg' // Fetch the filter from the Filter Plugin Manager to automatically handle dependencies $filter = $serviceLocator->get('FilterManager')->get('S3RenameUpload'); $filter->setOptions(array( 'bucket' => 'my-bucket', 'target' => 'users/5/profile-picture.jpg', 'overwrite' => true )); $filter->filter($files['my-upload']); // File has been renamed and moved to 'my-bucket' bucket, inside the 'users/5' path
会话保存处理器
请阅读 ZF2 文档中的 [会话保存处理器部分] (http://zf2.readthedocs.org/en/latest/modules/zend.session.save-handler.html) 以获取更多信息。
DynamoDB
要遵循 [ZF2 示例] (http://zf2.readthedocs.org/en/latest/modules/zend.session.save-handler.html),DynamoDB 会话保存处理器可能如下使用
use Zend\Session\SessionManager; // Assume we are in a context where $serviceLocator is a ZF2 service locator. $saveHandler = $serviceLocator->get('Aws\Session\SaveHandler\DynamoDb'); $manager = new SessionManager(); $manager->setSaveHandler($saveHandler);
你可能还需要进一步配置保存处理程序,你可以在你的应用程序中完成此操作。你可以将config/aws_zf2.local.php.dist
文件复制到你的项目的config/autoload
目录中(当然,不包括.dist
)。
有关更详细的配置信息,请参阅config/aws_zf2.local.php.dist
和[AWS会话处理程序文档](http://docs.aws.amazon.com/aws-sdk-php-2/latest/class-Aws.DynamoDb.Session.SessionHandler.html#_factory)。
相关模块
以下是一些使用AWS SDK for PHP的ZF2模块,通过包含此模块来实现
- SlmMail - 允许使用各种提供商发送电子邮件的模块(包括Amazon SES)
- SlmQueueSqs – 简化使用Amazon SQS的模块