AMI と EBS スナップショットの Recycle Bin(ごみ箱)機能を AWS CLI でサクッと設定する
AMI と EBS スナップショットの Recycle Bin(ごみ箱)機能が2021年の終わりから2022年の頭にリリースされまして、既存のAWSアカウントや新規作成したAWSアカウントに事故防止のためにサクッと設定しておきたいなと思って AWS CLI からの設定方法をまとめました。
ごみ箱設定のメリット・デメリット
- AMI、EBS スナップショットを誤削除してもごみ箱から復元(救出)できる
- ごみ箱にある間は AMI、EBS スナップショットのデータサイズに応じた課金発生します
- ごみ箱内の保持期間は1日から365日まで指定できます
ムダなコスト削減のためにきれいさっぱり掃除してみたら Auto Scaling Group で使用していた AMI を削除してて、スケールアウトできなくなったときでもごみ箱から救出してリカバリできます。AMI 作り直しするよりよっぽどいいですよね!
コマンドまとめ
完全に削除されるまでの保持期間は30日設定の例です。CloudShellからも実行できるのでお手軽です。
aws rbin create-rule \ --description "Rule for All AMIs" \ --retention-period "RetentionPeriodValue=30,RetentionPeriodUnit=DAYS" \ --resource-type "EC2_IMAGE" \ --tags "Key=Name,Value=RetentionRuleAllAMIs"
aws rbin create-rule \ --description "Rule for All EBS Snapshots" \ --retention-period "RetentionPeriodValue=30,RetentionPeriodUnit=DAYS" \ --resource-type "EBS_SNAPSHOT" \ --tags "Key=Name,Value=RetentionRuleAllSnapshots"
2022/3/30追記2つのごみ箱を有効化する理由は以下のリンクをご確認ください
詳細
各機能の説明は個別にブログで紹介されておりますので以下を参考にしてください。
AMI のごみ箱
EBS スナップショットのごみ箱
AWS CloudShell
AWS CLI で設定してみた
以下のドキュメントを参考にコマンドを実行して、マネジメントコンソールから設定された結果を確認します。
create-rule — AWS CLI 2.4.18 Command Reference
--retention-period
の書き方が最初いまいちわからなく時間を浪費しましたので、以下で紹介しているコマンドの実行例を参考にしていただければ幸いです。
AMI ごみ箱
削除したすべての AMI に対して30日保持する設定します。
--resource-type "EC2_IMAGE"
: EC2_IMAGE 指定が AMI ごみ箱のルールを示しています--retention-period
: 保持日数を指定してします
aws rbin create-rule \ --description "Rule for All AMIs" \ --retention-period "RetentionPeriodValue=30,RetentionPeriodUnit=DAYS" \ --resource-type "EC2_IMAGE" \ --tags "Key=Name,Value=RetentionRuleAllAMIs"
ステータスがpending
となっており実行した直後は設定したルールが反映されておりません。ほんの少し待ちマネジメントコンソールから設定が反映されているか確認してください。
{ "Identifier": "AtzIeOQMXn1", "RetentionPeriod": { "RetentionPeriodValue": 30, "RetentionPeriodUnit": "DAYS" }, "Description": "Rule for All AMIs", "Tags": [ { "Key": "Name", "Value": "RetentionRuleAllAMIs" } ], "ResourceType": "EC2_IMAGE", "ResourceTags": [], "Status": "pending" }
保持ルールが追加されました。
すべてのリソースに適用され、保持期間30日と設定できています。
削除・復元確認
試しに AMI を登録解除(削除)します。
ごみ箱のリソースからカテゴリAMIsを選択すると、登録登録された AMI を確認できます。
復元してみます。
元の AMI 一覧から確認できる状態に戻りました。
EBS Snapshot
削除したすべての EBS スナップショット に対して30日保持する設定します。
--resource-type "EBS_SNAPSHOT""
: EBS_SNAPSHOT 指定がスナップショットごみ箱のルールを示しています--retention-period
: 保持日数を指定してします
aws rbin create-rule \ --description "Rule for All EBS Snapshots" \ --retention-period "RetentionPeriodValue=30,RetentionPeriodUnit=DAYS" \ --resource-type "EBS_SNAPSHOT" \ --tags "Key=Name,Value=RetentionRuleAllSnapshots"
ステータスがpending
となっており実行した直後は設定したルールが反映されておりません。ほんの少し待ちマネジメントコンソールから設定が反映されているか確認してください。
{ "Identifier": "jhBszoamtN5", "RetentionPeriod": { "RetentionPeriodValue": 30, "RetentionPeriodUnit": "DAYS" }, "Description": "Rule for All EBS Snapshots", "Tags": [ { "Key": "Name", "Value": "RetentionRuleAllSnapshots" } ], "ResourceType": "EBS_SNAPSHOT", "ResourceTags": [], "Status": "pending" }
保持ルールが追加されました。
すべてのリソースに適用され、保持期間30日と設定できています。
削除・復元確認
試しにスナップショットを削除します。
ごみ箱のリソースからカテゴリEBS スナップショットを選択すると、削除されたスナップショットを確認できます。
復元してみます。
元のスナップショット一覧から確認できる状態に戻りました。
おわりに
コマンドコピペでごみ箱機能を有効化できますのでいざというときの備えのために設定しておいてはいかがでしょうか。あと、調べる限りですとAWS CLI からは設定できるものの、CloudFormation にはまだ対応していないようでした。