无法编写简单的PHP代码来调用aws sqs

dla*_*ced 2 php amazon-sqs amazon-web-services

我对PHP的经验很少,所以请耐心等待.我试图按照AWS的文档和示例,以确认我可以连接到使用AWS PHP SDK AWS SQS,但我卡住......这绝对是愚蠢的事,我做.这是我的php文件(名为stuff.php):

<?php
header('Content-Type: text/plain; charset=utf-8');
require '/home/ubuntu/vendor/autoload.php';
// Create the queue using the AWS-PHP-SDK function, create_queue, and store it 
// in the '$newqueue' variable.
$newqueue = $sqs->create_queue($queuename);
// Print the created queue results.
echo '<br></br><h2>CREATE QUEUE</h2>';
print '<pre>' . print_r($newqueue, true) . '<pre><br/><br/>';
?>
Run Code Online (Sandbox Code Playgroud)

这基本上是从AWS文档中复制的,其中更新了require地址.我使用以下格式创建了一个〜/ .aws/credentials文件:

[default]
aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY
Run Code Online (Sandbox Code Playgroud)

但是当我在浏览器中加载文件时,Apache2 error.log会将此信息发送给我:

[Mon Dec 15 20:46:26.460172 2014] [:error] [pid 2625] [client 10.0.3.1:48211] PHP Notice:  Undefined variable: sqs in /var/www/html/stuff.php on line 7
[Mon Dec 15 20:46:26.460203 2014] [:error] [pid 2625] [client 10.0.3.1:48211] PHP Fatal error:  Call to a member function create_queue() on a non-object in /var/www/html/stuff.php on line 7
Run Code Online (Sandbox Code Playgroud)

我假设$ sqs会有一个从SDK分配的预设值,但也许我应该手动分配一些东西:我不知道那可能是什么.谢谢,

Ant*_*nio 5

根据AWS PHP SDK文档的最新版本,您需要使用提供的工厂方法创建SqsClient对象实例,然后您将能够创建SQS队列,从/向它们接收/发送消息等等.

下载AWS PHP SDK最新ZIP版本,将其解压缩到您的目录项目中,并使用以下脚本以使用SQS Client创建和发送消息.注意:记得将真实的相对路径放到aws-autoloader文件和正确的AWS凭证上.

<?php
require './relative/path/to/aws-autoloader.php';
use Aws\Sqs\SqsClient;
use Aws\Common\Credentials\Credentials;

$credentials = new Credentials('YOUR_ACCESS_KEY', 'YOUR_SECRET_KEY');

// Instantiate the SQS client with your AWS credentials
$client = SqsClient::factory(array(
    'credentials' => $credentials,
    'region'  => '<region name>'
));

$result = $client->createQueue(array('QueueName' => 'my-queue'));
$queueUrl = $result->get('QueueUrl');

echo "SQS queue url: $queueUrl";

$client->sendMessage(array(
    'QueueUrl'    => $queueUrl,
    'MessageBody' => 'Hello World!',
));
Run Code Online (Sandbox Code Playgroud)