PR

Pythonのboto3を使ったSQS活用方法

boto3 SQSアイキャッチ Python
記事内に広告が含まれています。

Amazon Simple Queue Service (SQS) は、AWS が提供するメッセージキューイングサービスです。

これにより、分散システムやマイクロサービス間の通信を容易にし、アプリケーションのスケーラビリティや耐障害性を向上させることができます。

特に、メッセージの一時的な保存や非同期処理キューを使用したタスクのワークフロー管理などに役立ちます。

この記事では、PythonのSDKであるboto3を使って、SQSの基本的な操作方法について紹介していきます。

この記事でわかること

・boto3について
・SQSについて
・boto3を使ったSQSの活用例

プログラミング

boto3とは?

boto3 は、AWSのサービスにアクセスするためのPython SDKです。
SQS だけでなく、EC2 や S3、DynamoDB など多くの AWS サービスをサポートしており、Python のコードから AWS のリソースを操作するための強力なツールを提供します。

boto3 を使うことで、AWS のサービスをプログラムで操作しやすくなるため、管理や自動化のタスクを簡単に行えるようになります。

例えば、S3 にファイルをアップロードしたり、EC2 インスタンスを起動したりする操作をコード一行で実行できます。

この記事では、その中でも SQS を操作する方法にフォーカスします。

SQSとは?

Amazon SQS は、メッセージをキューに追加し、メッセージの取り出しや削除を行うことで、分散システム間のメッセージの送受信を管理するサービスです。

SQS には以下の2種類があります。

標準キュー (Standard Queue)

・高いスループットと低コストで、メッセージの順序性が保証されないキューであり、処理速度を優先したい場合に適している
メッセージが重複して配信される可能性がある(「少なくとも一度」配信される)

FIFOキュー (First-In-First-Out Queue)

・メッセージが FIFO(先入れ先出し)順に処理され、重複しないように保証される
・メッセージの順序性を重要視するシステムや、重複処理を避けたい場合に利用される

boto3を使用したSQSの活用例

以下では、boto3 を使って SQS キューの作成、メッセージの送受信、およびキューの削除を行う具体的なコード例を紹介します。

前提条件

boto3 を使用する前に、AWS CLI のセットアップとaws configureコマンド」を使用して AWS の認証情報を設定しておきます。

これにより、アクセスキーとシークレットキーを設定し、boto3 が認証情報を使用して AWS サービスにアクセスできるようになります。

$ pip install boto3
$ aws configure

SQS キューの作成

以下のコードでは、create_queue メソッドを使用して新しい SQS キューを作成します。
QueueName パラメータでキュー名を指定し、必要に応じて Attributes でキューの設定を行います。

import boto3

# SQSクライアントを作成
sqs = boto3.client('sqs')

# SQSキューの作成
response = sqs.create_queue(
    QueueName='MyTestQueue',
    Attributes={
        'DelaySeconds': '5',  # メッセージがキューに保持される時間(秒)
        'VisibilityTimeout': '60'  # メッセージの不可視状態のタイムアウト(秒)
    }
)

print(f"キューが作成されました。キューのURL: {response['QueueUrl']}")

QueueUrl は作成したキューの URL を示しており、メッセージの送受信など後続の操作で使用します。

メッセージの送信

次に、作成したキューにメッセージを送信してみましょう。
send_message メソッドを使ってキューにメッセージを追加します。

# 先ほど作成したキューのURL
queue_url = response['QueueUrl']

# メッセージの送信
send_response = sqs.send_message(
    QueueUrl=queue_url,
    MessageBody='Hello, this is a test message!',
    DelaySeconds=10  # メッセージが送信されてからキューに追加されるまでの遅延時間(秒)
)

print(f"メッセージが送信されました。メッセージID: {send_response['MessageId']}")

MessageBody には、キューに送信したいメッセージの内容を指定します。

さらに、DelaySeconds パラメータを使用することで、メッセージがキューに保持されるまでの遅延時間を設定することができます。

メッセージの受信

次に、receive_message メソッドを使ってキューからメッセージを受信します。
受信したメッセージは、処理後に削除することをお勧めします。

# メッセージの受信
receive_response = sqs.receive_message(
    QueueUrl=queue_url,
    MaxNumberOfMessages=1,  # 受信するメッセージの最大数
    WaitTimeSeconds=10  # メッセージの受信を待機する時間(秒)
)

# メッセージが存在するか確認
if 'Messages' in receive_response:
    for message in receive_response['Messages']:
        print(f"メッセージ受信: {message['Body']}")

        # メッセージの削除
        sqs.delete_message(
            QueueUrl=queue_url,
            ReceiptHandle=message['ReceiptHandle']
        )
        print(f"メッセージを削除しました。メッセージID: {message['MessageId']}")
else:
    print("メッセージが存在しませんでした。")

このコードは、MaxNumberOfMessages で受信するメッセージの最大数を指定し、WaitTimeSeconds でメッセージの受信を待機する時間を設定しています。

受信したメッセージは delete_message メソッドを使って削除することで、キューの中から取り除かれます。

キューの削除

最後に、不要になった SQS キューを削除する方法を紹介します。
delete_queue メソッドを使うことで、指定したキューを削除できます。

# キューの削除
sqs.delete_queue(QueueUrl=queue_url)
print(f"キューを削除しました: {queue_url}")

キューを削除すると、そのキュー内のすべてのメッセージも一緒に削除されるため、操作には注意が必要です。

その他の操作

他にもboto3を使ってSQSの操作をするメソッドはたくさんあります。
気になる方は、公式サイトを参考にしてみてください!

クラウド

さいごに

この記事では、boto3 を使って SQS の基本的な操作を行う方法を紹介しました。

キューの作成、メッセージの送受信、およびキューの削除を行うことで、boto3 を使った SQS の基礎を理解できたかと思います。

boto3 を活用するして、AWS 上のサービスをより柔軟かつ効率的に操作できるようになりましょう!

また、私のサイトでは、他にもAWSやプログラミングに関する情報を発信しています。
この記事が参考になった方は、他の記事も読んでみて下さい!

ご精読ありがとうございました!

コメント

タイトルとURLをコピーしました