ShellScript で Amazon SNS トピックに紐づかないサブスクリプションを削除する方法について調査した結果を備忘録として残しておく
環境
- OS: MacOS
実際のコード
«…» 部分は実際の環境に応じて書き換える
#!/bin/bash
AWS_PROFILE=<<AWS Configure Profile>>
# SNSトピック一覧を取得
topics=$(aws sns list-topics --profile=${AWS_PROFILE} | jq -r '.Topics[].TopicArn')
# SNSサブスクリプション一覧を取得
subscriptions=$(aws sns list-subscriptions --profile=${AWS_PROFILE})
# トピックに紐づかないサブスクリプションを削除
echo $subscriptions | jq -c '.Subscriptions[]' | while read subscription; do
subscriptionArn=$(echo $subscription | jq -r '.SubscriptionArn')
topicArn=$(echo $subscription | jq -r '.TopicArn')
# サブスクリプションのtopicArnがtopicsに含まれていなければ削除
if ! echo $topics | grep $topicArn > /dev/null
then
aws sns unsubscribe --subscription-arn $subscriptionArn --profile=${AWS_PROFILE}
echo "削除したサブスクリプション: $subscriptionArn"
fi
done