AWS CLIを利用して、SQSのキューにメッセージを送信してみましょう。
ジョブ依頼側の立場で、ジョブ処理を依頼するイメージになります。
前提条件
SQSへの権限
- 操作するキューに対してRead/Write権限があること。
AWS CLIのバージョン
以下のバージョンで動作確認済
- AWS CLI 1.10.6
- AWS CLI 1.6.10
- 事前作業
===========
0.1. リージョンの指定
対象のキューが存在するリージョンを指定します。
(カレントユーザが利用するカレントリージョンも切り変わります。)
コマンド
export AWS_DEFAULT_REGION='ap-northeast-1'
このハンズオンでは、AWS標準のリージョン変数を利用していますが、regionオプションでコマンド毎に指定しても同様の結果になります。
(「オペミスを回避するために明示的に実行する」という意味ではregionオプションの方が良いです。)
0.2. キューの指定
メッセージの送信先となるキューのURLを確認します。
コマンド
SQS_QUEUE_NAME=$(date +%Y%m%d)-handson-queue \
&& echo ${SQS_QUEUE_NAME}
- キューの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/20160509-handson-queue
- 通知内容の決定
=====================
通知するメッセージ内容を決定します。
コマンド
SQS_MSG_BODY='Hello World!'
- メッセージ数の確認
=====================
メッセージ送信前に、キューにいくつのメッセージが処理待ちになっているか確認します。
コマンド
aws sqs get-queue-attributes \
--queue-url ${SQS_QUEUE_URL} \
--attribute-names ApproximateNumberOfMessages
結果
{
"Attributes": {
"ApproximateNumberOfMessages": "0"
}
}
キューを作成した直後であれば0のはずです。
- メッセージの送信
===================
メッセージを送信します。
コマンド
aws sqs send-message \
--queue-url "${SQS_QUEUE_URL}" \
--message-body "${SQS_MSG_BODY}"
結果
{
"MD5OfMessageBody": "6699d5711c044a109a6aff9fc193aada",
"MessageId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
- メッセージ数の確認
===========================
メッセージ送信後に、キューにいくつのメッセージが処理待ちになっているか確認します。
コマンド
aws sqs get-queue-attributes \
--queue-url ${SQS_QUEUE_URL} \
--attribute-names ApproximateNumberOfMessages
結果
{
"Attributes": {
"ApproximateNumberOfMessages": "1"
}
}
先程送信したメッセージがキューに到着していれば1になるはずです。
完了
ここまでで、ジョブの依頼側からキューに依頼を投げました。