首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法编写简单的php代码来调用aws sqs

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

Stack Overflow用户
提问于 2014-12-16 15:13:49
回答 1查看 3K关注 0票数 2

我对PHP的经验很少,所以请容忍我。我试图按照AWS文档示例来确认我可以使用AWS连接到AWS,但是我得到了stuck...and --这肯定是我正在做的蠢事。下面是我的php文件(称为stuff.php):

代码语言:javascript
复制
<?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/>';
?>

它基本上是从AWS文档复制的,并更新了require。我使用以下格式创建了一个~/..aws/凭据文件:

代码语言:javascript
复制
[default]
aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY

但是,当我在浏览器中加载文件时,Apache2 error.log会向我发送以下内容:

代码语言:javascript
复制
[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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-16 19:59:17

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

下载AWS PHP的最新ZIP版本,将其解压缩到目录项目中,并使用以下脚本创建并发送一条使用script的消息。注:请记住将真正的相对路径放置到aws-autoloader文件和正确的AWS凭据。

代码语言:javascript
复制
<?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!',
));
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27507775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档