andrewfenn / aws-helper
一个小型辅助库,用于简化AWS SDK的集成
Requires
- php: >=5.5
- aws/aws-sdk-php: ~2.2
This package is not auto-updated.
Last update: 2024-09-14 17:42:58 UTC
README
此库是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