亚马逊SQS例外

时间:2015-11-11 11:11:02

标签: php amazon-web-services laravel-4 amazon-sqs

我想使用SQS(生产)在队列中发送邮件,但它给了我异常错误。

  

异常:缺少必需的客户端配置选项:version:(string)A" version"配置值是必需的。指定版本约束可确保您的代码不会受到对服务的重大更改的影响。例如,使用Amazon S3时,您可以将API版本锁定为" 2006-03-01"。您构建的SDK具有以下版本的" sqs":*" 2012-11-05"您可以提供最新的"到"版本"配置值,以利用客户端API提供商可以找到的最新API版本。注意:使用' latest'在生产应用程序中不建议使用。可以在每个客户的API文档页面上找到可用API版本的列表:http://docs.aws.amazon.com/aws-sdk-php/v3/api/index.html。如果您无法加载特定的API版本,则可能需要更新SDK的副本。

我的代码是

require(Config::get('paths.storage') . "sqs/aws-autoloader.php");
use Aws\Sqs\SqsClient;


$client = SqsClient::factory(array(
                'key' => 'my-key',
                'secret' => 'sec-key',
                'region' => 'us-east-1',
    ));

$result = $client->createQueue(array('QueueName' => 'my-queue'));
    $queueUrl = $result->get('QueueUrl');
    $client->sendMessage(array(
        'QueueUrl' => $queueUrl,
        'MessageBody' => 'An awesome message!',
    ));

$result = $client->receiveMessage(array(
        'QueueUrl' => $queueUrl,
    ));

    foreach ($result->getPath('Messages/*/Body') as $messageBody) {
        // Do something with the message
        echo $messageBody;
    }
    die;

SqsClient::factory

上发生错误

1 个答案:

答案 0 :(得分:4)

异常为您提供原因。您需要指定要使用的API版本:

$client = SqsClient::factory(array(
            'version' => '2012-11-05',
            'key' => 'my-key',
            'secret' => 'sec-key',
            'region' => 'us-east-1',
));