AWS CLIを利用して、SQSのキューの削除をします。
前提条件
SQSへの権限
SQSに対してフル権限があること。
AWS CLIのバージョン
以下のバージョンで動作確認済
- AWS CLI 1.10.6
- AWS CLI 1.6.10
コマンド
aws --version
結果(例)
aws-cli/1.9.20 Python/2.7.5 Darwin/13.4.0 botocore/1.3.20
- 準備
=======
0.1. リージョンの決定
削除対象のキューが存在するリージョンを指定します。 (カレントユーザが利用するカレントリージョンも切り変わります。)
変数の設定(東京リージョンの場合)
export AWS_DEFAULT_REGION='ap-northeast-1'
0.2. 変数の確認
プロファイルが想定のものになっていることを確認します。
コマンド
aws configure list
結果(例)
Name Value Type Location
---- ----- ---- --------
profile sqs-prjz-mbp13 env AWS_DEFAULT_PROFILE
access_key ****************XXXX shared-credentials-file
secret_key ****************XXXX shared-credentials-file
region ap-northeast-1 env AWS_DEFAULT_REGION
0.3. キューの指定
削除するキューを指定します。
ここでは、http://qiita.com/tcsh/items/a41ac99e41430c1d758c で作成したキューを指定します。
変数の設定
SQS_QUEUE_NAME='example-queue'
変数の設定
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/example-queue
- 事前作業
===========
1.1. キューの確認
削除対象のキューが一覧に存在することを確認します。
コマンド
aws sqs list-queues \
--queue-name-prefix ${SQS_QUEUE_NAME}
結果
{
"QueueUrls": [
"https://ap-northeast-1.queue.amazonaws.com/XXXXXXXXXXXX/example-queue"
]
}
1.2. メッセージ数の確認
キューの削除前に、キュー内にメッセージが残っていないか確認しましょう。
コマンド
aws sqs get-queue-attributes \
--queue-url ${SQS_QUEUE_URL} \
--attribute-names ApproximateNumberOfMessagesNotVisible
結果
{
"Attributes": {
"ApproximateNumberOfMessagesNotVisible": "0"
}
}
コマンド
aws sqs get-queue-attributes \
--queue-url ${SQS_QUEUE_URL} \
--attribute-names ApproximateNumberOfMessages
結果
{
"Attributes": {
"ApproximateNumberOfMessages": "0"
}
}
両方とも値がゼロになっていれば、処理待ちのメッセージが無いことになります。
- キューの削除
===============
キューを削除をします。
変数の確認
cat << ETX
SQS_QUEUE_URL: ${SQS_QUEUE_URL}
ETX
コマンド
aws sqs delete-queue \
--queue-url ${SQS_QUEUE_URL}
結果
(戻り値なし)
- 事後作業
===========
キューの削除完了確認
削除したキューが一覧に存在しないことを確認します。
コマンド
aws sqs list-queues \
--queue-name-prefix ${SQS_QUEUE_NAME}
結果
(戻り値なし)
listに反映されるまでにタイムラグがあるようです。
完了
以上で、SQSのキュー削除が完了しました。