AWS Backup의 Default vault 복구 지점을 함께 삭제합니다.

5114 단어 backupcliAWS

개요



오이타 전에 테스트했던 AWS Backup에서 Default vault에 대량의 AMI와 Snapshot이 있으며,
방해였기 때문에 지우려고 했는데, EC2의 컴파네로부터는 정리해 삭제를 할 수 없다.

AWS Backup의 컴패네이션에서라면 1개씩 밖에 지울 수 없고, vault 마다 삭제하려고 했던 곳
Default의 vault는 삭제할 수 없는 것이 판명.

견적 소스:
AWS Backup을 사용하기 전에 기억해야 할 사항

해결책



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

짠 쉘



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내에 있는 복구 포인트(EC2라면 AMI와 Snapshot)가 모두 사라진다.
※잘못해서 다른 vault로 삭제하지 않도록


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
한층 더 출력한 것을 1회 1회 파일로 하고 있던 것을, 변수에 넣어 처리하도록(듯이) 변경.
(변수 lines= 뒤에 반각 스페이스가 들어가면 잘 움직이지 않고 약간 빠진다)

수정된 쉘



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!!

좋은 웹페이지 즐겨찾기