saeven/laminas-aws-sdk

Laminas 模块,允许轻松集成 AWS SDK for PHP

5.0.0 2021-11-09 20:03 UTC

README

Latest Stable Version Total Downloads Build Status

此模块为 AWS SDK for PHP 提供了一个简单的包装器。它将 AWS 服务构建器注册为 ZF2 服务管理器中的一个服务,使您可以在应用程序的任何地方轻松访问。

跳转到

入门

安装

使用 Composer 将模块安装到应用程序的 vendor 目录。在您的 composer.json 中添加以下行。这也会安装 AWS SDK for PHP。

如果您想使用 ZF3 并且您的 PHP 版本 >= 5.6,使用

{
    "require": {
        "aws/aws-sdk-php-zf2": "4.*"
    }
}

否则,

{
    "require": {
        "aws/aws-sdk-php-zf2": "3.*"
    }
}

如果您正在使用 ZF2 服务管理器 < 2.7,请使用 2.0.* 版本。

如果您正在使用 AWS SDK v2,请使用 ZF2 模块的 1.2.* 版本。

配置

将模块名称添加到您的项目 config/application.config.phpconfig/modules.config.php

return array(
    /* ... */
    'modules' => array(
        /* ... */
        'AwsModule'
    ),
    /* ... */
);

aws.local.php.dist 文件复制并粘贴到您的 config/autoload 文件夹中,并使用您的凭据和其他配置设置进行自定义。请确保从您的文件中删除 .dist。您的 aws.local.php 文件可能看起来像以下示例

<?php

return [
    'aws' => [
        'credentials' => [
            '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 中创建了一个表。

use Aws\Sdk;

public function indexAction()
{
    $aws    = $this->getServiceLocator()->get(Sdk::class);
    $client = $aws->createDynamoDb();

    $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";
}

视图助手

AWS SDK ZF2 模块现在提供了两个视图助手,用于生成 Amazon S3 和 Amazon CloudFront 资源的链接。

注意:从 AWS 模块的 v2 版本开始,S3 和 CloudFront 的所有 URL 都使用 HTTPS,并且不能进行修改。

S3Link 视图助手

在您的视图中创建 S3 链接

<?php echo $this->s3Link('my-object', 'my-bucket');

可以使用 setDefaultBucket 方法全局设置默认存储桶。

<?php
    $this->plugin('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->plugin('cloudFrontLink')->setDefaultDomain('my-domain');
    echo $this->cloudFrontLink('my-object');

您还可以通过传递第三个参数(即过期日期)来创建私有内容的签名 URL。

<?php echo $this->cloudFrontLink('my-object', 'my-bucket', time() + 60);

过滤器

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(’[
    '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)(http://zf2.readthedocs.org/en/latest/modules/zend.session.save-handler.html),DynamoDB会话保存处理程序可能使用如下方式

use AwsModule\Session\SaveHandler\DynamoDb as DynamoDbSaveHandler;
use Laminas\Session\SessionManager;

// Assume we are in a context where $serviceLocator is a ZF2 service locator.

$saveHandler = $serviceLocator->get(DynamoDbSaveHandler::class);

$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)(http://docs.aws.amazon.com/aws-sdk-php-2/latest/class-Aws.DynamoDb.Session.SessionHandler.html#_factory)以获取更详细的配置信息。

获取帮助

请使用以下社区资源来获取帮助。我们使用GitHub问题来跟踪错误和功能请求,并且有限的能力来处理它们。

此SDK实现了AWS服务API。有关AWS服务和它们的限制的一般问题,你也可以看看Amazon Web Services讨论论坛

打开问题

如果你遇到aws-sdk-php-zf2的错误,我们希望听到你的反馈。搜索现有的问题,并确保在打开新问题之前你的问题尚未存在。如果你包括aws-sdk-php-zf2的版本、PHP版本和你使用的操作系统版本,这将很有帮助。在适当的时候,请包括堆栈跟踪和简化的重现案例。

GitHub问题旨在用于错误报告和功能请求。对于使用aws-sdk-php的帮助和问题,请使用获取帮助部分中列出的资源。可用于处理问题的资源有限,通过保持打开问题的列表精简,我们可以及时回应。

贡献

我们努力为我们提供的AWS服务提供高质量且有用的SDK,我们非常重视社区的意见和贡献。在提交任何问题或拉取请求之前,请查看我们的贡献指南,以确保我们拥有所有必要的信息,以便有效地回应你的错误报告或贡献。

相关模块

以下是一些使用AWS SDK for PHP的ZF2模块

  • SlmMail - 允许使用各种提供商发送电子邮件的模块(包括Amazon SES)
  • SlmQueueSqs – 简化Amazon SQS使用的模块

资源