AWS CLIでEC2のバックアップをとる
先日EC2インスタンスの定期バックアップスクリプトを組んだので、aws-cliコマンドのメモついでに公開。
セキュリティ面・エラー処理周りの実装があまいので流れとコマンドだけ。
やりたい事
- ローカルや他サーバから特定のEC2インスタンスのバックアップをとる
- 世代管理をしたい
- 削除処理はAMI解除 → スナップショット削除とする
処理の流れ
- AMIを作成する
- 名前は「ホスト名_日付」みたいな感じにしておく
- AMI名を利用して解除したいAMIのIDを取得する
- 世代数と日付の演算を利用して削除したいAMI名を決定する
- AMIの解除をする
- AMI_IDを使ってスナップショットのIDを取得
- スナップショットを削除する
定期実行したい場合
- 管理サーバあたりのcronにセットしとくといいかも?
- Lambdaを利用した実装方法を模索しましたがデフォルトだとaws-cliを使えない(Lambda側)のでめんどくさいです
複数管理したい場合
- 名前の配列を用意して上記の流れをループさせればOK
使用するコマンド
AMIの作成
$ aws ec2 create-image --instance-id --name AMI_NAME --no-reboot
※再起動してでも正確にバックアップをとりたい場合は「--no-reboot」を外す
AMI_IDの取得
$ aws ec2 describe-images --owners self --query 'Images[?Name==`AMI_NAME`].[ImageId]|[0]|[0]' --output text
AMI解除
$ aws ec2 deregister-image --image-id AMI_ID
スナップショットIDの取得
$ aws ec2 describe-snapshots --owner-ids AWS_ACCOUNT_ID --query 'Snapshots[?contains(Description, `AMI_ID`)].[SnapshotId]' --output text
スナップショットの削除
$ aws ec2 delete-snapshot --snapshot-id SNAPSHOT_ID
Author And Source
この問題について(AWS CLIでEC2のバックアップをとる), 我々は、より多くの情報をここで見つけました https://qiita.com/nagi125/items/e45f2d8855a9587f32fb著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .