手順
作成
属性指定
メッセージ受信待機時間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\\\"}\\\""