AWS

AWSのSNSやSQSに登録した設定の一覧をawscliコマンドから取得する方法

以前、localstack 上の SNS や SQS の操作を awscli コマンドから行う方法を紹介しました。

AWSクライアントを使ってLocalStack上のSNSやSQSに対してコマンドライン操作する以前まで、AWS の SNS や SQS のサービスを利用するには AWS の契約が必須だと思っていたのですが、LocalStack の...

今回は、AWS 上の SNS や SQS について、意図したものが作成されているか確認するためのシェルを書いてみました。

[SNS]
トピック
サブスクリプション

[SQS]
キュー

目的としては、開発環境と本番環境で設定の差異がないかの確認なのですが、AWS のコンソール上で複数のアカウントごとの設定を比較するのが面倒なのですよね。

特に、SNS は障害対策としてマルチリージョンで運用している人も多いと思います。

開発や本番の環境もそうですが、リージョンによって設定に差異があるのも怖いですよね・・・。

SNSのトピック

トピックの一覧は、以下のコマンドで取得が可能です。

aws sns list-topics –region [リージョン] –profile [プロファイル] –endpoint-url [SNSのエンドポイント]

試しに開発環境の AWS のプロファイルを dev という名前で作成しておき、以下のシェルを実行してみます。

リージョンは、東京とシンガポールと北カリフォルニアとしておきましょう。

それぞれのリージョンごとの SNS トピックが以下のファイルに出力されます。

dev_ap-northeast-1_sns_topics.txt
dev_ap-southeast-1_sns_topics.txt
dev_us-west-1_sns_topics.txt

東京リージョンとシンガポールリージョンの差分を確認するには、diff コマンドで十分ですね。

SQSのキュー

キューの一覧は、以下のコマンドで取得が可能です。

aws sqs list-queues –region [リージョン] –profile [プロファイル] –endpoint-url [SQSのエンドポイント]

SNS のトピックと同じく、以下のシェルを作成して実行してみます。

東京リージョンの SQS キューが以下のファイルに出力されます。

dev_ap-northeast-1_sqs_queue.txt

SQS の場合は、意図したキューがすべて作成されているかの確認や、以下のように開発環境と本番環境の差分を確認したりするイメージです。

SNSのサブスクリプション

サブスクリプションの一覧は、以下のコマンドで取得が可能です。

aws sns list-subscriptions –region [リージョン] –profile [プロファイル] –endpoint-url [SNSのエンドポイント]

また、list-subscriptions-by-topic でトピック単位でのサブスクリプションの一覧が取得できますので、トピック一覧で取得したトピックベースで確認するのもアリですね。

aws sns list-subscriptions-by-topic –region [リージョン] –profile [プロファイル] –endpoint-url [SNSのエンドポイント] –topic-arn [トピックのARN]

ただし、取得したサブスクリプションの一覧を単純に比較しても、残念ながら詳細な設定内容まで確認することはできません。

実際には、メッセージのフィルタポリシー(Attributes)など、確認したい箇所は細部に渡りますよね。

サブスクリプションの一覧を取得してから、個別に比較していくのが近道かもしれません。

aws sns get-subscription-attributes –region [リージョン] –profile [プロファイル] –endpoint-url [SNSのエンドポイント] –subscription-arn [サブスクリプションのARN]