aws-sqs
信頼性の高いメッセージキューイングを実現するAmazon SQSを操作し、標準/FIFOキューの作成、デッドレターキューの設定、メッセージの送受信、疎結合なイベント駆動型アーキテクチャの構築を支援するSkill。
📜 元の英語説明(参考)
Work with Amazon SQS for reliable message queuing. Create standard and FIFO queues, configure dead-letter queues for failed messages, send and receive messages in batches, and build decoupled event-driven architectures.
🇯🇵 日本人クリエイター向け解説
信頼性の高いメッセージキューイングを実現するAmazon SQSを操作し、標準/FIFOキューの作成、デッドレターキューの設定、メッセージの送受信、疎結合なイベント駆動型アーキテクチャの構築を支援するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o aws-sqs.zip https://jpskill.com/download/14672.zip && unzip -o aws-sqs.zip && rm aws-sqs.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/14672.zip -OutFile "$d\aws-sqs.zip"; Expand-Archive "$d\aws-sqs.zip" -DestinationPath $d -Force; ri "$d\aws-sqs.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
aws-sqs.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
aws-sqsフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
AWS SQS
Amazon Simple Queue Service (SQS) は、マイクロサービスを分離するためのフルマネージドなメッセージキューイングサービスです。SQS には、Standard (ベストエフォート型の順序付け、少なくとも 1 回の配信) と FIFO (正確に 1 回の配信、順序付け) の 2 種類のキューがあります。
コアコンセプト
- Standard Queue — 無制限のスループット、少なくとも 1 回の配信、ベストエフォート型の順序付け
- FIFO Queue — 正確に 1 回の処理、厳密な順序付け、バッチ処理で 3000 msg/s
- Visibility Timeout — メッセージを受信後に非表示にする期間
- Dead-Letter Queue (DLQ) — 処理に失敗したメッセージの宛先
- Message Group ID — キュー内での並列処理のための FIFO 順序付けキー
- Long Polling — 空の応答と API コストを削減
キューの作成
# 標準キューの作成
aws sqs create-queue \
--queue-name order-processing \
--attributes '{
"VisibilityTimeout": "60",
"MessageRetentionPeriod": "1209600",
"ReceiveMessageWaitTimeSeconds": "20"
}'
# FIFO キューの作成 (名前は .fifo で終わる必要があります)
aws sqs create-queue \
--queue-name order-processing.fifo \
--attributes '{
"FifoQueue": "true",
"ContentBasedDeduplication": "true",
"VisibilityTimeout": "60"
}'
Dead-Letter Queues
# 最初に DLQ を作成
aws sqs create-queue --queue-name order-processing-dlq
# DLQ ARN の取得
DLQ_ARN=$(aws sqs get-queue-attributes \
--queue-url https://sqs.us-east-1.amazonaws.com/123456789/order-processing-dlq \
--attribute-names QueueArn --query 'Attributes.QueueArn' --output text)
# 3 回の失敗後、DLQ を使用するようにメインキューを構成
aws sqs set-queue-attributes \
--queue-url https://sqs.us-east-1.amazonaws.com/123456789/order-processing \
--attributes '{
"RedrivePolicy": "{\"deadLetterTargetArn\":\"'$DLQ_ARN'\",\"maxReceiveCount\":\"3\"}"
}'
# DLQ からソースキューにメッセージを再送
aws sqs start-message-move-task \
--source-arn "$DLQ_ARN" \
--destination-arn "arn:aws:sqs:us-east-1:123456789:order-processing"
メッセージの送信
# 単一のメッセージを送信
aws sqs send-message \
--queue-url https://sqs.us-east-1.amazonaws.com/123456789/order-processing \
--message-body '{"orderId":"12345","action":"process"}' \
--message-attributes '{
"OrderType": {"DataType":"String","StringValue":"premium"}
}'
# グループ ID を指定して FIFO キューに送信
aws sqs send-message \
--queue-url https://sqs.us-east-1.amazonaws.com/123456789/order-processing.fifo \
--message-body '{"orderId":"12345","action":"process"}' \
--message-group-id "customer-789" \
--message-deduplication-id "order-12345-v1"
バッチ処理
# バッチで最大 10 件のメッセージを送信
aws sqs send-message-batch \
--queue-url https://sqs.us-east-1.amazonaws.com/123456789/order-processing \
--entries '[
{"Id":"1","MessageBody":"{\"orderId\":\"001\"}"},
{"Id":"2","MessageBody":"{\"orderId\":\"002\"}"},
{"Id":"3","MessageBody":"{\"orderId\":\"003\"}"}
]'
# boto3 を使用したバッチコンシューマー
import boto3
import json
sqs = boto3.client('sqs')
QUEUE_URL = 'https://sqs.us-east-1.amazonaws.com/123456789/order-processing'
def poll_and_process():
while True:
response = sqs.receive_message(
QueueUrl=QUEUE_URL,
MaxNumberOfMessages=10, # 最大 10 件のバッチ
WaitTimeSeconds=20, # ロングポーリング
MessageAttributeNames=['All']
)
messages = response.get('Messages', [])
if not messages:
continue
entries_to_delete = []
for msg in messages:
try:
body = json.loads(msg['Body'])
process_order(body)
entries_to_delete.append({
'Id': msg['MessageId'],
'ReceiptHandle': msg['ReceiptHandle']
})
except Exception as e:
print(f"Failed: {e}")
# 可視性タイムアウト後にメッセージはキューに戻ります
if entries_to_delete:
sqs.delete_message_batch(
QueueUrl=QUEUE_URL,
Entries=entries_to_delete
)
受信と削除
# ロングポーリングでメッセージを受信
aws sqs receive-message \
--queue-url https://sqs.us-east-1.amazonaws.com/123456789/order-processing \
--max-number-of-messages 5 \
--wait-time-seconds 20 \
--message-attribute-names All
# 処理済みのメッセージを削除
aws sqs delete-message \
--queue-url https://sqs.us-east-1.amazonaws.com/123456789/order-processing \
--receipt-handle "AQEBzL..."
# より多くの処理時間が必要なメッセージの可視性タイムアウトを変更
aws sqs change-message-visibility \
--queue-url https://sqs.us-east-1.amazonaws.com/123456789/order-processing \
--receipt-handle "AQEBzL..." \
--visibility-timeout 120
モニタリング
# キューの深さを確認
aws sqs get-queue-attributes \
--queue-url https://sqs.us-east-1.amazonaws.com/123456789/order-processing \
--attribute-names ApproximateNumberOfMessages,ApproximateNumberOfMessagesNotVisible,ApproximateNumberOfMessagesDelayed
# すべてのメッセージを削除 (注意して使用してください)
aws sqs purge-queue \
--queue-url https://sqs.us-east-1.amazonaws.com/123456789/order-processing
ベストプラクティス
- コストを削減するために、常にロングポーリング (WaitTimeSeconds=20) を有効にする
- 悪意のあるメッセージをキャッチするために、すべてのキューにデッドレターキューを設定する
- 順序が重要な場合にのみ FIFO キューを使用する — 標準キューの方がはるかに高いスループットを持つ
- 効率のために、メッセージをバッチで処理および削除する
- 可視性タイムアウトを平均処理時間の 6 倍に設定する
- 並列順序処理のために、FIFO キューでメッセージグループ ID を使用する
ApproximateNumberOfMessagesを監視し、キューの深さの急増時にアラートを発する- 冪等なコンシューマーを実装する — メッセージは複数回配信される可能性がある
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
AWS SQS
Amazon Simple Queue Service (SQS) is a fully managed message queuing service for decoupling microservices. It offers two queue types: Standard (best-effort ordering, at-least-once delivery) and FIFO (exactly-once, ordered).
Core Concepts
- Standard Queue — unlimited throughput, at-least-once delivery, best-effort ordering
- FIFO Queue — exactly-once processing, strict ordering, 3000 msg/s with batching
- Visibility Timeout — period a message is hidden after being received
- Dead-Letter Queue (DLQ) — destination for messages that fail processing
- Message Group ID — FIFO ordering key for parallel processing within a queue
- Long Polling — reduces empty responses and API costs
Creating Queues
# Create a standard queue
aws sqs create-queue \
--queue-name order-processing \
--attributes '{
"VisibilityTimeout": "60",
"MessageRetentionPeriod": "1209600",
"ReceiveMessageWaitTimeSeconds": "20"
}'
# Create a FIFO queue (name must end in .fifo)
aws sqs create-queue \
--queue-name order-processing.fifo \
--attributes '{
"FifoQueue": "true",
"ContentBasedDeduplication": "true",
"VisibilityTimeout": "60"
}'
Dead-Letter Queues
# Create the DLQ first
aws sqs create-queue --queue-name order-processing-dlq
# Get DLQ ARN
DLQ_ARN=$(aws sqs get-queue-attributes \
--queue-url https://sqs.us-east-1.amazonaws.com/123456789/order-processing-dlq \
--attribute-names QueueArn --query 'Attributes.QueueArn' --output text)
# Configure main queue to use DLQ after 3 failed attempts
aws sqs set-queue-attributes \
--queue-url https://sqs.us-east-1.amazonaws.com/123456789/order-processing \
--attributes '{
"RedrivePolicy": "{\"deadLetterTargetArn\":\"'$DLQ_ARN'\",\"maxReceiveCount\":\"3\"}"
}'
# Redrive messages from DLQ back to source queue
aws sqs start-message-move-task \
--source-arn "$DLQ_ARN" \
--destination-arn "arn:aws:sqs:us-east-1:123456789:order-processing"
Sending Messages
# Send a single message
aws sqs send-message \
--queue-url https://sqs.us-east-1.amazonaws.com/123456789/order-processing \
--message-body '{"orderId":"12345","action":"process"}' \
--message-attributes '{
"OrderType": {"DataType":"String","StringValue":"premium"}
}'
# Send to FIFO queue with group ID
aws sqs send-message \
--queue-url https://sqs.us-east-1.amazonaws.com/123456789/order-processing.fifo \
--message-body '{"orderId":"12345","action":"process"}' \
--message-group-id "customer-789" \
--message-deduplication-id "order-12345-v1"
Batch Operations
# Send up to 10 messages in a batch
aws sqs send-message-batch \
--queue-url https://sqs.us-east-1.amazonaws.com/123456789/order-processing \
--entries '[
{"Id":"1","MessageBody":"{\"orderId\":\"001\"}"},
{"Id":"2","MessageBody":"{\"orderId\":\"002\"}"},
{"Id":"3","MessageBody":"{\"orderId\":\"003\"}"}
]'
# Batch consumer with boto3
import boto3
import json
sqs = boto3.client('sqs')
QUEUE_URL = 'https://sqs.us-east-1.amazonaws.com/123456789/order-processing'
def poll_and_process():
while True:
response = sqs.receive_message(
QueueUrl=QUEUE_URL,
MaxNumberOfMessages=10, # batch up to 10
WaitTimeSeconds=20, # long polling
MessageAttributeNames=['All']
)
messages = response.get('Messages', [])
if not messages:
continue
entries_to_delete = []
for msg in messages:
try:
body = json.loads(msg['Body'])
process_order(body)
entries_to_delete.append({
'Id': msg['MessageId'],
'ReceiptHandle': msg['ReceiptHandle']
})
except Exception as e:
print(f"Failed: {e}")
# Message returns to queue after visibility timeout
if entries_to_delete:
sqs.delete_message_batch(
QueueUrl=QUEUE_URL,
Entries=entries_to_delete
)
Receiving and Deleting
# Receive messages with long polling
aws sqs receive-message \
--queue-url https://sqs.us-east-1.amazonaws.com/123456789/order-processing \
--max-number-of-messages 5 \
--wait-time-seconds 20 \
--message-attribute-names All
# Delete a processed message
aws sqs delete-message \
--queue-url https://sqs.us-east-1.amazonaws.com/123456789/order-processing \
--receipt-handle "AQEBzL..."
# Change visibility timeout for a message needing more processing time
aws sqs change-message-visibility \
--queue-url https://sqs.us-east-1.amazonaws.com/123456789/order-processing \
--receipt-handle "AQEBzL..." \
--visibility-timeout 120
Monitoring
# Check queue depth
aws sqs get-queue-attributes \
--queue-url https://sqs.us-east-1.amazonaws.com/123456789/order-processing \
--attribute-names ApproximateNumberOfMessages,ApproximateNumberOfMessagesNotVisible,ApproximateNumberOfMessagesDelayed
# Purge all messages (use with caution)
aws sqs purge-queue \
--queue-url https://sqs.us-east-1.amazonaws.com/123456789/order-processing
Best Practices
- Always enable long polling (WaitTimeSeconds=20) to reduce costs
- Set up dead-letter queues on every queue to catch poison messages
- Use FIFO queues only when ordering matters — standard queues have much higher throughput
- Process and delete messages in batches for efficiency
- Set visibility timeout to 6x your average processing time
- Use message group IDs in FIFO queues for parallel ordered processing
- Monitor
ApproximateNumberOfMessagesand alert on queue depth spikes - Implement idempotent consumers — messages may be delivered more than once