手順
作成
標準Queue
標準Queueを作成
QUEUE_NAME="my-queue"
## Queueの作成
aws sqs create-queue --queue-name ${QUEUE_NAME}
FIFOQueue
FIFOQueueを作成する場合はQueue名の最後に .fifo を付与し、属性に FifoQueue=true を指定する。
FIFOQueueを作成
QUEUE_NAME="my-queue.fifo"
## Queueの作成
aws sqs create-queue --queue-name ${QUEUE_NAME} --attributes FifoQueue=true
Note | Queue名は1-80文字 |
属性指定
メッセージ受信待機時間20秒(ロングポーリング設定)
- ReceiveMessageWaitTimeSeconds
メッセージ受信待機時間
ReceiveMessageWaitTimeSecondsを設定(20秒)
QUEUE_NAME="my-queue.fifo"
## QueueのURL取得
QUEUE_URL=$(aws sqs get-queue-url --queue-name ${QUEUE_NAME} --output text)
aws sqs set-queue-attributes --queue-url "${QUEUE_URL}" --attributes ReceiveMessageWaitTimeSeconds=20
複数指定(メッセージ受信待機時間とロングポーリング設定とコンテンツベースの重複削除)
- ReceiveMessageWaitTimeSeconds
メッセージ受信待機時間
- ContentBasedDeduplication
コンテンツベースの重複削除
ReceiveMessageWaitTimeSecondsを設定(20秒)
QUEUE_NAME="my-queue.fifo"
## QueueのURL取得
QUEUE_URL=$(aws sqs get-queue-url --queue-name ${QUEUE_NAME} --output text)
aws sqs set-queue-attributes --queue-url "${QUEUE_URL}" --attributes ReceiveMessageWaitTimeSeconds=20,ContentBasedDeduplication=true
- NOTE
コンテンツベースの重複削除はFIFOキューのみ。標準Queueで実行した場合以下のエラーメッセージが表示された
An error occurred (InvalidAttributeName) when calling the SetQueueAttributes operation: Unknown Attribute ContentBasedDeduplication.
デッドレターキュー指定
QUEUE_NAME="my-queue.fifo"
## QueueのURL取得
QUEUE_URL=$(aws sqs get-queue-url --queue-name ${QUEUE_NAME} --output text)
## デッドレターキュー設定(※エスケープが非常に見にくいのでjsonファイルで登録したほうがよい...)
aws sqs set-queue-attributes --queue-url "${QUEUE_URL}" --attributes "ReceiveMessageWaitTimeSeconds=20,ContentBasedDeduplication=true,RedrivePolicy=\"{\\\"deadLetterTargetArn\\\":\\\"${QUEUE_ARN}\\\",\\\"maxReceiveCount\\\":\\\"1000\\\"}\\\""
情報の取得
ARNの取得
QueueArnの取得
QUEUE_NAME="my-queue.fifo"
QUEUE_URL=$(aws sqs get-queue-url --queue-name ${QUEUE_NAME} --output text)
QUEUE_ARN=$(aws sqs get-queue-attributes --queue-url "${QUEUE_URL}" --attribute-names QueueArn --query Attributes.QueueArn --output text)
echo "${QUEUE_ARN}"
削除
Queueの削除
QUEUE_NAME="my-queue.fifo"
QUEUE_URL=$(aws sqs get-queue-url --queue-name ${QUEUE_NAME} --output text)
aws sqs delete-queue --queue-url ${QUEUE_URL}