AWS php SDK SQS Messageの取得

snow
2021-03-30
snow
2021-03-30

# aws access key 設定

```
aws configure
AWS Access Key ID [None]: XXXXXXXXXXXXXX
AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXXXXXXXXXX
Default region name [None]: ap-northeast-1
Default output format [None]: json
```

# php install

```
amazon-linux-extras install php7.4 -y
php --version
```

# composer install

```
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
composer --version
```

# フォルダ作成

```
mkdir phpsqs
```

# php sdk 導入

```
composer require aws/aws-sdk-php
```

# ファイル作成


```
# vim get_queue_worker.php

require 'vendor/autoload.php';

use Aws\Sqs\SqsClient;
use Aws\Exception\AwsException;

$queueUrl = "QUEUE_URL";

$client = new SqsClient([
'profile' => 'default',
'region' => 'ap-northeast-1',
'version' => '2012-11-05'
]);

try {
$result = $client->receiveMessage(array(
'AttributeNames' => ['SentTimestamp'],
'MaxNumberOfMessages' => 1,
'MessageAttributeNames' => ['All'],
'QueueUrl' => $queueUrl, // REQUIRED
'WaitTimeSeconds' => 0,
));
if (!empty($result->get('Messages'))) {
var_dump($result->get('Messages')[0]);
$result = $client->deleteMessage([
'QueueUrl' => $queueUrl, // REQUIRED
'ReceiptHandle' => $result->get('Messages')[0]['ReceiptHandle'] // REQUIRED
]);
} else {
echo "No messages in queue. \n";
}
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
```

# 実行
```
php get_queue_worker.php
```