Boto 3の勉強 その6 (SQS)

今日は最後にSQSキューのメッセージを削除する。

まず、キューの中にメッセージが入っているか確認する。
スタンダードキューのため、数は不正確につき、メッセージの有無だけでもってことで。

docs.aws.amazon.com

import boto3

sqs = boto3.resource("sqs")
client = boto3.client("sqs")

queue = sqs.get_queue_by_name(QueueName="test-queue-20220301")
sqs_url = "https://ap-northeast-1.queue.amazonaws.com/{AWSアカウントID}/test-queue-20220301"

response = client.get_queue_attributes(
    QueueUrl=sqs_url, AttributeNames=["ApproximateNumberOfMessages"]
)

print(response["Attributes"])

実行結果

% python sample-sqs.py
{'ApproximateNumberOfMessages': '3'}

メッセージの有無を確認したので、キューのメッセージを削除してみる。
ドキュメントを眺める限り、purge_queueがよさそう。

boto3.amazonaws.com

最終的には、以下コードで

import boto3

sqs = boto3.resource("sqs")
client = boto3.client("sqs")

queue = sqs.get_queue_by_name(QueueName="test-queue-20220301")
sqs_url = "https://ap-northeast-1.queue.amazonaws.com/{AWSアカウントID}/test-queue-20220301"

client.purge_queue(QueueUrl=sqs_url)

response = client.get_queue_attributes(
    QueueUrl=sqs_url, AttributeNames=["ApproximateNumberOfMessages"]
)
print(response["Attributes"])

実行結果もバッチリ

% python sample-sqs.py
{'ApproximateNumberOfMessages': '0'}