AWS SQSについて勉強したまとめ

実務でキューイングが向いてそうな処理があったので、AWS SQS を導入したいと考えている。 導入前に調べたことを雑にまとめていく。 実際にサービスで使用しているわけではなく、これから使用するために調査している段階なので、間違っていることなどがあれば教えてください。

SQS ってなにさ

AWS 公式の説明から引用すると「完全マネージド型メッセージキュー」というものらしいです。 完全マネージド、というのは「完全運用保守管理代行」ということであり、ざっくり言ってしまえば裏で何が動いてるか、サーバがどういう状態かなどをいい感じにやってくれるということですね。 そしてメッセージキューとは異なるプログラム間で動作を連携させるための手法の一つであり、送信側はキューと呼ばれるデータ領域にデータを保持し、データを受ける側の処理完了は待たずに次の処理を続けるという方式のものです。

SQS の使い方 - 準備

AWSコンソールにログインしてSQSをクリック。 メッセージをキューイングするための箱であるキューを作成する。 今回はtestというキュー名 (あとで画像はる)

SQS の使い方 - AWS CLIを使う

// test というキュー名に hoge というメッセージを送信
$ aws sqs send-message --queue-url https://sqs.ap-northeast-1.amazonaws.com/XXXXXXXXX/test --message-body hoge
{
    "MD5OfMessageBody": "ea703e7aa1efda0064eaa507d9e8ab7e",
    "MessageId": "a323ade9-e834-436c-90f3-b6cbfae29740"
}

// test というキューのメッセージを取得
$ aws sqs receive-message --queue-url https://sqs.ap-northeast-1.amazonaws.com/XXXXXXXXX/test
{
    "Messages": [
        {
            "Body": "hoge",
            "ReceiptHandle": "AQEB25kImuDLtxBnBPaHZxSb4qr+9yPz3Ws4x2JtHUVKi/Wf7tGKMjd2CdTBuYrA0FtnEjO2y3d8VRvWkmQ/idiZpYupSCUJ+aTZiGgb7+7Udn1WyLb8nFM9Rndel+BjuZZqi3xsbEyfzBIASIcHbkRZ1cXvtoocOVsbONK612t6Nklj38c0UwBz3bY+SP3qMpGayp4Sq1k3VxwgAXflgvtxfqvdKrGFTRBLE7YbTOyb1cHoqJna8t3LMkWuRmcC+s1Ul9HsAjtWEAV3y4z96NjVr3WqSofqj2gy9zAkAN0Ebj4weqSvfPaYCZNBQ76mDUbxMGiof+AX3fWlgm+x5iEYranD3+eyZ4LLAY7bwbC0GLeCroZhgau03wWIPqwKcCEQ2ufQPEwCvF06EjI5yXpKJw==",
            "MD5OfBody": "ea703e7aa1efda0064eaa507d9e8ab7e",
            "MessageId": "a323ade9-e834-436c-90f3-b6cbfae29740"
        }
    ]
}

// キュー削除
$ aws sqs delete-message --queue-url https://sqs.ap-northeast-1.amazonaws.com/XXXXXXXXX/test --receipt-handle AQEB25kImuDLtxBnBPaHZxSb4qr+9yPz3Ws4x2JtHUVKi/Wf7tGKMjd2CdTBuYrA0FtnEjO2y3d8VRvWkmQ/idiZpYupSCUJ+aTZiGgb7+7Udn1WyLb8nFM9Rndel+BjuZZqi3xsbEyfzBIASIcHbkRZ1cXvtoocOVsbONK612t6Nklj38c0UwBz3bY+SP3qMpGayp4Sq1k3VxwgAXflgvtxfqvdKrGFTRBLE7YbTOyb1cHoqJna8t3LMkWuRmcC+s1Ul9HsAjtWEAV3y4z96NjVr3WqSofqj2gy9zAkAN0Ebj4weqSvfPaYCZNBQ76mDUbxMGiof+AX3fWlgm+x5iEYranD3+eyZ4LLAY7bwbC0GLeCroZhgau03wWIPqwKcCEQ2ufQPEwCvF06EjI5yXpKJw==