AWS SQSの各設定値の意味 & Ansibleの書式


概要

AWS SQSの各設定値の意味と、Ansibleの書き方です。

設定値

項目 設定内容
デフォルトの可視性タイムアウト(Default Visibility Timeout) キューのメッセージは、自動では削除されない。
そのため、メッセージ取得バッチ(Lambdaなど)が複数ある場合、それぞれが同一のメッセージを取得してしまう可能性がある。
これを回避するために、あるバッチからメッセージが取得されたら、他のバッチからメッセージが取得できないように、一定時間メッセージを非表示にする時間の設定。デフォルト30秒。
メッセージ保持期間(Message Retention Period) メッセージ保持期間
最大メッセージサイズ(Maximum Message Size) 1メッセージの最大サイズ
配信遅延(Delivery Delay) メッセージが登録された後、Lambdaなどのバッチがメッセージが取得できるようになるまでの時間。
可視性タイムアウトが、メッセージ取得後なのに対し、こちらはキューに登録後、一定時間メッセージを非表示にする。
メッセージ受信待機時間(Receive Message Wait time) ロングポーリングの時間。Lambdaなどのバッチがメッセージを取得しに行った時にキューが空だった場合、ここで設定された時間だけ、キューにメッセージが入ってくるのを待つ。
再処理ポリシーの使用 下記の機能を使う場合はチェック
デッドレターキュー(Dead Letter Queue) 処理に失敗したキューを退避させる、別のSQSのキュー名(ベットSQSキューの作成が必要)
最大受信数(Maximum Receives) リトライ回数

Ansibleの書式

main.yml
- name: sqs
  become_user: '{{ username }}'
  sqs_queue:
    # キューの名前
    name: 'my_sqs'
    # リージョン
    region: 'ap-northeast-1'
    # デフォルトの可視性タイムアウト
    default_visibility_timeout: 30
    # メッセージ保持期間
    message_retention_period: '{{ 86400 * 4 }}'
    # 最大メッセージサイズ
    maximum_message_size: 204800
    # 配信遅延
    delivery_delay: 0
    # メッセージ受信待機時間
    receive_message_wait_time: 0
    # 再処理ポリシーの使用
    redrive_policy:
      # 最大受信数
      maxReceiveCount: 2
      # デッドレターキュー
      deadLetterTargetArn: 'arn:aws:sqs:ap-northeast-1:{{ account_id }}:my_sqs_dlq'

参考

AWS SQS(Amazon Simple Queue Service)の使い方
【AWS】SQSをただただ触ってみただけの話
SQSのロングポーリング機能を試してみた