reliv/aws-sdk-php-zf2-zf3fc

Zend Framework 2 模块,允许轻松集成 AWS SDK for PHP

1.3.1 2021-03-17 20:02 UTC

This package is auto-updated.

Last update: 2024-09-18 03:32:38 UTC


README

Latest Stable Version Total Downloads Build Status

简介

本模块提供了一个简单的包装器,用于 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 实例角色),您可以省略您的 keysecret 参数,因为它们将自动从 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的模块

链接

aws-sdk-php-zf2-zf3fc

aws-sdk-php-zf2-zf3fc