処理の実行
SQSキューのURLを取得します。
コマンド:
sqs_queue_url=$( \
aws sqs get-queue-url \
--queue-name ${SQS_QUEUE_NAME} \
--output text \
) \
&& echo ${sqs_queue_url}
結果(例):
https://ap-northeast-1.queue.amazonaws.com/XXXXXXXXXXXX/handson-cli-sqs-1st-queue
SQSキューからのメッセージ受信
メッセージ受信ファイル名を指定します。
変数の設定:
file_sqs_message_receive_in_comming="${DIR_SQS_MESSAGE_RECEIVE_IN_COMMING}/$(date +%s)-$$.json" \
&& echo ${file_sqs_message_receive_in_comming}
結果(例):
${HOME}/environment/tmp-handson-cli-sqs-1st/incomming/16xxxxxxxx-xxxx.json
SQSキューからメッセージを受信します。
変数の確認:
cat << END
# sqs_queue_url:"https://ap-northeast-1.queue.amazonaws.com/XXXXXXXXXXXX/handson-cli-sqs-1st-queue"
sqs_queue_url="${sqs_queue_url}"
# file_sqs_message_receive_in_comming:"${HOME}/environment/tmp-handson-cli-sqs-1st/incomming/16xxxxxxxx-xxxx.json"
file_sqs_message_receive_in_comming="${file_sqs_message_receive_in_comming}"
END
コマンド:
aws sqs receive-message \
--queue-url "${sqs_queue_url}" \
> ${file_sqs_message_receive_in_comming} \
&& cat ${file_sqs_message_receive_in_comming}
結果(例):
{
"Messages": [
{
"Body": "Hello World!",
"ReceiptHandle": "AQEBUo4y+XVuRSe4jMv0QM6Ob1viUnPbZ64WI01+Kmj6erhv192m80m+wgyob+zBgL4OMT+bps4KR/q5WK+W3tnno6cCFuwKGRM4OQGM9omMkK1F+ZwBC49hbl7UlzqAqcSrHfxyDo5x+xEyrEyL+sFK2MxNV6d0mF+7WxXTboyAu7JxIiKLG6cUlkhWfk3W4/Kghagy5erwRhwTaKtmF+7hw3Y99b55JLFTrZjW+/Jrq9awLCedce0kBQ3d2+7pnlpEcoY42+7T1dRI2s7um+nj5TIUpx2oSd9BWBHCjd8UQjmyye645asrWMAl1VCvHZrHRIG/v3vgq776e1mmi9pGxN96IW1aDZCQ1CSeqTFASe4=",
"MD5OfBody": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"MessageId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
]
}
メッセージIDを取得します。
メッセージのメッセージIDを取得します。
変数の設定:
SQS_MESSAGE_MESSAGE_ID=$( \
cat ${file_sqs_message_receive_in_comming} \
| jp.py 'Messages[0].MessageId' \
| sed 's/"//g' \
) \
&& echo ${SQS_MESSAGE_MESSAGE_ID}
結果(例):
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
受信済メッセージの保存ファイル名を指定します。
変数の設定:
file_sqs_message_received="${DIR_SQS_MESSAGE_RECEIVED}/${SQS_MESSAGE_MESSAGE_ID}.json" \
&& echo ${file_sqs_message_received}
結果(例):
${HOME}/environment/tmp-handson-cli-sqs-1st/received/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.json
受信メッセージの受信済メッセージ用ディレクトリへの移動
メッセージを受信済メッセージ用ディレクトリへ移動します。
コマンド:
mv ${file_sqs_message_receive_in_comming} \
${file_sqs_message_received}
結果(例):
メッセージの削除
メッセージの受信ハンドルを取得します。
コマンド:
SQS_MESSAGE_RECEIPT_HANDLE=$( \
cat ${file_sqs_message_received} \
| jp.py 'Messages[].ReceiptHandle' \
| sed 's/[]\"\[]//g' \
) \
&& echo ${SQS_MESSAGE_RECEIPT_HANDLE}
結果(例):
AQEBxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
SQSキューからメッセージを削除します。
変数の確認:
cat << END
# sqs_queue_url:"https://ap-northeast-1.queue.amazonaws.com/XXXXXXXXXXXX/handson-cli-sqs-1st-queue"
sqs_queue_url="${sqs_queue_url}"
# SQS_MESSAGE_RECEIPT_HANDLE:"AQEBxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx="
SQS_MESSAGE_RECEIPT_HANDLE="${SQS_MESSAGE_RECEIPT_HANDLE}"
END
コマンド:
aws sqs delete-message \
--queue-url "${sqs_queue_url}" \
--receipt-handle ${SQS_MESSAGE_RECEIPT_HANDLE}
結果(例):
削除済メッセージの保存ファイル名を指定します。
変数の設定:
file_sqs_message_deleted="${DIR_SQS_MESSAGE_DELETED}/${SQS_MESSAGE_MESSAGE_ID}.json" \
&& echo ${file_sqs_message_deleted}
結果(例):
${HOME}/environment/tmp-handson-cli-sqs-1st/deleted/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.json
メッセージを削除済メッセージ用ディレクトリへ移動します。
コマンド:
mv ${file_sqs_message_received} \
${file_sqs_message_deleted}
結果(例):
完了確認
「SQSキュー"handson-cli-sqs-1st-queue"のメッセージ数が"0"である。」ことを確認します。
コマンド:
aws sqs get-queue-attributes \
--queue-url ${sqs_queue_url} \
--attribute-names ApproximateNumberOfMessages \
--query 'Attributes.ApproximateNumberOfMessages' \
--output text
結果(例):
「削除済SQSメッセージファイル"${HOME}/environment/tmp-handson-cli-sqs-1st/deleted/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.json"が存在する。」ことを確認します。
コマンド:
ls ${file_sqs_message_deleted}
結果(例):
${HOME}/environment/tmp-handson-cli-sqs-1st/deleted/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.json