andrewfenn/aws-helper

一个小型辅助库,用于简化AWS SDK的集成

0.3.0 2015-09-28 08:47 UTC

This package is not auto-updated.

Last update: 2024-09-14 17:42:58 UTC


README

Software License Quality Score

Total Downloads Total Downloads Total Downloads

此库是AWS SDK的扩展,旨在简化集成AWS安全令牌服务,您可以在服务器上通过AWS API刷新访问和秘密令牌。

这比使用静态的访问和秘密密钥要好,因为它们会不断变化,只有您的AWS服务器才能获取这些信息。以下是一个简单的步骤列表,说明如何在您的AWS账户上设置此功能。

这个库不是一款包含所有功能的全面库,如果您需要更高级的用法,请考虑直接使用AWS SDK。

如何安装

将以下内容添加到您的composer.json文件中,并运行composer update

    "require": {
        "andrewfenn/aws-helper": "0.3.0"
    }

此库已配置为使用亚马逊的角色来获取访问和秘密密钥。如果您不想这样做,例如您在AWS之外的自有系统中进行开发,请参考以下内容。

如何设置您的AWS账户

如果您想使用亚马逊的角色,以便您不在代码库中存储访问或秘密密钥,请按照以下步骤操作。

  • 登录到您的亚马逊控制台
  • 转到身份与访问管理
  • 单击“角色”链接
  • 创建一个新角色,打开它,然后单击“附加角色策略”
  • 从您希望使用的服务策略模板中选择,例如“Amazon S3完全访问”、“Amazon SQS完全访问”
  • 将您创建的角色名称添加到“iam_role”配置选项

完成这些步骤后,密钥、秘密和安全令牌将可以从亚马逊基础设施内部的URL下载,该URL将为您的服务器提供访问权限。

如何设置亚马逊之外的开发环境

对于本地开发,创建一个如下所示的名为development.json的文件

{
  "Code" : "Success",
  "LastUpdated" : "2015-02-06T07:50:20Z",
  "AccessKeyId" : "<PUT YOUR ACCESS KEY HERE>",
  "SecretAccessKey" : "<PUT YOUR SECRET KEY HERE>",
  "Token" : "",
  "Expiration" : "2030-02-19T04:45:53+00:00"
}

将AccessKeyId和SecretAccessKey字段更改为适当的设置。确保到期日期在未来,否则代码将尝试在每次运行代码时获取新的密钥。

$awsHelper = new AwsHelper('development.json', 'http://url-to-root-folder-with-file/');

我建议您不要提交development.json文件。此文件应存放在一个安全的地方,只有您的开发团队能够访问,因为它包含您的AWS访问和秘密密钥详细信息。

S3 Helper的快速使用

要使用S3辅助库,您将执行如下类似操作。

一个快速说明:$file_pointer返回文件指针而不是文件内容,这是一个设计选择,因为某些文件可能太大而无法放入PHP内存中。请在使用此代码时考虑这一点,以避免在PHP中加载大型文件时出错。

<?php
use AwsHelper\AwsHelper;
use AwsHelper\S3Helper;

/* instantiate S3 Helper */
$adapter = new S3Helper(new AwsHelper('iam-role'), 'bucket-name');

/* Get a file from S3, store it temporarily on the system */
$file_pointer = $adapter->getFile('some/place/in/the/bucket/foo.txt');
if ($file_pointer === false)
    return false;

/* Read the entire file's contents into php */
$files_contents = fread($file_pointer, fstat($file_pointer)['size']);

/* The file downloaded to $file_pointer is destroyed upon script end
if you need to use this file afterwards then you need to copy it out
to somewhere else on the system. */

SQS Helper的快速使用

包含一个小的SQS辅助库,它允许您轻松地设置发送和接收队列,无需费心。

此辅助器将在到期日期过后刷新安全令牌,因此如果您有一个长时间运行的过程,代码将继续运行而不会抛出过期异常。

// Change the URL of your SQS queue in the appropiate field
$adapter = new SqsHelper(new AwsHelper('iam-role'), 'https://sqs.eu-west-1.amazonaws.com/****/queue-name-here');

// Push a message to SQS
$adapter->push('hello');

// The listen() command will block until a message comes in
foreach($adapter->listen() as $message)
{
    // Grab the Body of the message
    echo $message->get('Body')."\n";

    // Delete the message off the queue
    $adapter->remove($message);

    // Stop the listener thereby exiting the foreach
    $adapter->stop();
}
echo "Done\n";

上述代码将生成以下输出。

hello
Done