這近有個需求,需要針對sns這個服務去做刪除。

因為在Console上面一次只能刪一筆,所以只好下指令了

但又很懶得去用aws-nuke,畢竟只有sns,所以直接用shell+aws cli去做了。

SNS Topics部分

先查出所有的sns topics

aws sns list-topics --region us-east-1 --output text > topics

然後用awk去取得某一欄位再丟進其他檔案:

awk '{print $2}' topics > deleteTopic

然後寫一隻簡單的script去跑迴圈:

    #!/bin/bash
    
    while read line
    do
    aws sns delete-topic --topic-arn $line --region us-east-1
    echo 'the '$line' deleted'
    sleep 3
    done < deleteTopic

簡單說明,做一個while迴圈讀取檔案並每次讀取一行後執行aws sns delete-topic指令,執行後停止3秒一直到檔案讀取完畢。

SNS Subscribe部分也是大同小異

先查出所有的subscriptions,一樣用awk去過濾:

aws sns list-subscriptions --region us-east-1 --output text > subs

awk '{print $5}' subs > deleteSub

拿之前的script改:

    #!/bin/bash

    while read line
    do
     aws sns unsubscribe --subscription-arn $line --region us-east-1
     echo 'the '$line' deleted'
     sleep 3
    done < deleteSub

這就不多說了,差異只有aws-cli不一樣,其他都一樣。

這樣就可以解決了,比使用aws-nuke快很多,因為只有單一服務的話用前述的有點太多餘。