1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWS BackupのDefault vaultのリカバリーポイントをまとめて削除する。

Last updated at Posted at 2020-03-17

#概要
大分前にテストしていたAWS BackupでDefault vaultに大量のAMIとSnapshotがあり、
邪魔だったので消そうとしたところ、EC2のコンパネからはまとめて削除ができない。

AWS Backupのコンパネからだと1個ずつしか消せず、vaultごと削除しようとしたところ
Defaultのvaultは削除できないことが判明。

引用元:
[AWS Backupを使い始める前に覚えておきたいこと]
(https://qiita.com/hayao_k/items/a4f18d030e0e58063f64)

#解決策
50個程度のAMIとSnapshotなら1個1個手で消してもいいかもしれないが、どうせ同じ時間をかけるならまとめて削除できる方法を考えたい。
じゃあAWS CLIで一気にやってしまおう。

#環境
Amazon Linux2
aws-cli/1.16.300 Python/2.7.16 Linux/4.14.171-136.231.amzn2.x86_64 botocore/1.13.36

#組んだshell

budel.sh
#!/bin/bash
##一覧作成CLI用変数
LIST="list-recovery-points-by-backup-vault --backup-vault-name"

##AWSBackupにやらせたいCLI用変数
CMD="delete-recovery-point --backup-vault-name"

##引数省略用
RPA="--recovery-point-arn"

##引っ張ってくる値
VAL="RecoveryPointArn"

##VAULTからリカバリーポイント一覧を取得&整理
aws backup $LIST $1 | grep $VAL | sed -e "s/[\"]//g" | awk '{print $2}' | awk -F ',' '{print $1}' | cat > vault.txt

##出力したファイルから一行ずつコマンド処理
while read line
do
  aws backup $CMD $1 $RPA $line
done < ./vault.txt

##立つ鳥跡を濁さず
rm -f vault.txt

#結果
. budel.sh <vault名>で叩いてあげると、そのvault内にあるリカバリーポイント(EC2ならAMIとSnapshot)が全て消える。
※間違って他のvaultで削除しないように
image.png

CMDをlist-recovery-points-by-resource --resource-arnにして、
VALをResourceArnとかにすると、ResourceArn毎のリカバリーポイントの値を
リストで出してくれるので、そっちから試した方が良い(自分はそうした)

まだ全部見てないけど、CLIによっては他にもっと便利な動きしてくれるかな。
AWS Backup CLI一覧

#悩み事(解決_20200319)
あと、vault一覧取得のところでどうしても以下じゃないと出力が出来なくて、
awkを二回挟んでるんだけど、どうにかならんものか。
awk '{print $2}' | awk -F ',' '{print $1}'

こうすると何も出力されない。
awk -F ',' '{print $2}'

有志により、grep後のsedを以下に変更すると良いとのこと。
sed -r "s/\"|,//g

さらに出力したものを一回一回ファイルにしていたのを、変数に入れて処理するように変更。
(変数lines=の後に半角スペースが入っていると上手く動かず若干ハマる)

#修正したshell

awsdel.sh
 #!/bin/bash
 ##一覧作成用変数
 LIST="list-recovery-points-by-backup-vault --backup-vault-name"
 
 ##AWSBackupにやらせたいこと用変数
 CMD="delete-recovery-point --backup-vault-name"
 
 ##引数省略用
 RPA="--recovery-point-arn"
 
 ##引っ張ってくる値
 VAL="RecoveryPointArn"
 
 ##VAULT一覧を取得&整理し、変数に格納
 lines=`aws backup $LIST $1 | grep $VAL | sed -r "s/\"|,//g" | awk '{print $2}'`
 
 ##出力した結果から一行ずつコマンド処理
 for line in $lines
 do
   aws backup $CMD $1 $RPA $line
 done

very smart!!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?