こんにちは!CI(クラウドインテグレーション)部の樺澤です。
AWS Backupでリージョン間コピーした場合の削除方法について、公式ドキュメントに載っていなかったのでブログに残そうと思います。
合わせて、ハマったポイントについてもまとめました。
はじめに
AWS Backupの概要やリージョン間コピーについて知っていただけていると、このブログについても理解が進みやすいかと思います。
AWS Backup とは
以下のブログに、概要や基本的な作成方法についても載っています。
【入門編】AWS Backupを使ってEC2のAMIバックアップと復元を行う - サーバーワークスエンジニアブログ
AWS Backup でリージョン間コピーする方法
以下のブログに、本ブログで扱うリージョン間コピーの設定方法について載っています。
AWS BackupでEC2のバックアップを別リージョンにとる - サーバーワークスエンジニアブログ
やりたいこと
東京から大阪へと「EC2」のバックアップのリージョン間コピーをしていたが、不要になったバックアップを両リージョンとも削除したい。
ライフサイクルでの自動削除を待たずに今手動で削除したい。
バックアッププランは1時間ごと、保持期間は7日で設定していた。
※AWS Backupでは、「EC2」のバックアップ=実質「AMI」のバックアップとなります。以下、バックアップは「AMI」として扱っています。
つまり今回は、
「リージョン間コピー」で東京から大阪へバックアップをコピーしていたが、
ある時点のバックアップを両リージョンで削除したい!
ということを今回やろうと思います!
結論・要旨
バックアップを慎重に削除したい人向け
バックアップボールトから削除できるが、コピーで紐づいたもう一方のバックアップまで一括で削除してくれない
AWS Backup のコピージョブを使うことで紐づいたバックアップを知ることができ、意図した削除が可能
「削除したいAMIがある」という想定からスタートして、「削除完了」まで丁寧に解説
ハマったポイント
ハマりポイント①一括で削除はしてくれない
結論から申し上げると、AWS Backupのリージョン間コピーはリージョンごとに削除しなくてはなりません!!
私は最初、バックアップ作成時に「リージョン間コピー」の設定さえしていれば、一括で東京と大阪の両方にバックアップができるわけだから、なんとなく削除も一括でやってくれそう~と思っていました。
しかし、コピーが完了してしまえば各リージョンにおけるAWS Backupの支配下にあるわけです。。
東京リージョンのバックアップだけ消して満足していた私は大阪リージョンに残っていたバックアップの存在に気づきませんでした。。。
ハマりポイント②AMI IDで検索できない
まず前提として、リージョン間で AMI ID は固有となっています。
AWS公式ドキュメント参考↓
AMI ID は各 AWS リージョンで固有です。
加えて、AWS BackupではAMIの中身は同じでも取得時点ごとに「AMI ID」の値が違います。
このため、ある時点のAMIを削除したいけど、大阪リージョンだとどれかな?と探そうとしても東京リージョンのAMI IDからだと探せませんでした。(当たり前)
↓以下のように地味に推測することもできますが…
(2月1日15時ごろに東京でバックアップ作成完了しているから、同様に大阪も同じくらいの時刻に作成されているだろう、、てことは2月1日18時ごろに大阪で作成されたAMIを削除しよう…!)
…誤って意図しないAMIの削除を生む可能性があるためあまりお勧めしません。苦笑
今回は大丈夫ですが、Nameタグをつけていなかった場合であったり、同じスケジュールで他のAMIも作成していた場合、間違って消しそうで怖いですね。
ハマりポイント③AMIのコンソール画面からは削除できない
これはドキュメントにも書いてあることですが、念のため記載しておきます。
AWS Backupから作成されたAMIの場合、(EC2配下の)AMIの画面からは見えますが削除できません。なぜなら、AWS Backup で一元管理しているからです。
AMI の画面から削除したいAMIの削除(=登録解除)をしようとしても、エラーが出ます(汗
このため、AWS Backup のコンソール画面から操作して削除する必要があります。
(AWS公式ドキュメントより↓)
削除方法
では、意図した削除を行うためにはどうすればよいのでしょうか?
それは、AWS Backup の コピージョブ の履歴を見ることで可能となります!!
コピージョブでは、過去に実行したリージョン間コピーの履歴一覧や個別詳細を見ることができます。個別詳細を表示すると同じ時点で作成された2つのバックアップのARNがわかります。
これによって、意図した削除が可能となります。
それでは、コピージョブ経由で削除してみましょう。
やってみる
1.事前準備(削除したいAMIに紐づく情報を取得)
AかBのどちらかを実施してください。
A.送信"元"のAMIをもとに、送信先のAMIを探したいとき
リージョンはコピー元(東京)を選択しておきます。
[ EC2 ] のコンソール画面にてナビゲーションペインから [ AMI ] を選択し、削除したいAMIを選択します。
今回は、Nameタグに「test-region-copy」と表記されている、かつ作成日時が「2022/2/1の15時ごろである」AMIを削除したいため、以下のAMIを選択しています。
削除したいAMIの [ AMI ID ] をコピーしておきます。
B.送信"先"のAMIをもとに、送信元のAMIを探したいとき
リージョンはコピー先(大阪)を選択しておきます。
[ EC2 ] のコンソール画面にてナビゲーションペインから [ AMI ] を選択し、削除したいAMIを選択します。
(Aと同様、)Nameタグに「test-region-copy」と表記されている、かつ作成日時が「2022/2/1の15時ごろである」AMIを削除したいので、以下のAMIを選択しています。
次に、下ウィンドウの [タグ ] タブをクリックすると、タグのページが表示されます。
タグを見ると、「Key」に aws:backup:source-resource が設定されている「Value」があります。「Value」から、コロン(:)より後の値をコピーしてください。
以下のキャプチャですと、Valueが「 i-0b8c0ab613c112448:DF9F1985-20FE-097B-D561-526E6421DE5C 」なので、「 DF9F1985-20FE-097B-D561-526E6421DE5C 」の部分をコピーします。
以下、このコピーした値をコピージョブIDと表記します。
2.AWS Backupにてジョブを選択
注)リージョンはコピー元(東京)を選択してください。
[ AWS Backup ] のコンソール画面 を開き、ナビゲーションペインから [ ジョブ ] を選択します。
3.コピージョブの選択
[ コピージョブ ] タブを選択します。こちらでコピージョブの実行履歴がたくさん表示されているのがわかりますね。
※検索結果がそもそも表示されない場合は、右上にある [ 過去24時間 ] タブを [ 過去7日間 ] や [ 過去30日間 ] に変更して表示結果の範囲を広げてみてください。
4.コピージョブの絞りこみ
上記「1.事前準備」で控えておいた [ AMI ID ] か [ コピージョブID ] を検索バーに入力し、Enterを押すと・・・
該当する [AMI ID ] / [ コピージョブID ] に紐づいたコピージョブのみが表示されました!
※検索結果がヒットしない場合は、一度ブラウザ自体を更新して、右上にある [ 過去24時間 ] タブを [ 過去7日間 ] や [ 過去30日間 ] に変更して表示結果の範囲を広げてから、もう一度入力してみてください。
5.コピージョブの詳細を確認
「コピージョブID」のリンクをクリックすると・・・
コピージョブの詳細ページが表示されます!
[ジョブの詳細をコピー] という項目をみると、 ソースリージョンに東京、送信先リージョンに大阪が記載されているため、正常に東京から大阪へコピーされていることがわかりますね!
6.削除
[ジョブの詳細をコピー] という項目で、「ソース復旧ポイント ARN」 と「送信先復旧ポイント ARN」 という項目があります。
これらはそれぞれ、
「 ソース復旧ポイント ARN 」→コピー元である東京リージョンのバックアップ
「 送信先復旧ポイント ARN 」→コピー先である大阪リージョンのバックアップ
を示しています。
クリックすると、各バックアップの詳細画面にとぶことができます。
まず、コピー元を削除します。
コピー元(東京リージョン)のリンクへとんだ場合、このような画面がでます。
確認画面が表示されたら [ 削除 ] をご選択ください。
コピー先も同様に、この削除作業を行います。
コピー先(大阪リージョン)のリンクへとんだ場合、このような画面がでます。
画面が表示されたら、右上の [ 削除 ] タブを選択します。
確認画面が表示されたら [ 削除 ] をご選択ください。
削除手順は以上です。お疲れ様でした!!!
最後に
そもそもですが、AWSが推奨しているのはこのブログで書いている「手動削除」ではなく、(バックアッププランの作成時に)ライフサイクルを構成して「自動削除」する方法です。
(AWS公式ドキュメントより↓)
We recommend you use AWS Backup to automatically delete the backups that you no longer need by configuring your lifecycle when you created your backup plan.
……でも、不要なバックアップについては自動削除を待たずともこの世から消し去りたいですよね! !
バックアップの頻度を高くしてしまったり、保持期間を長めにしている場合、無駄な料金も地味にかかってしまいます。
そんな方にこの記事が参考になれば幸いです。
最後までご覧いただきありがとうございました!