LoginSignup
0
2

More than 5 years have passed since last update.

AWS CLIでEC2のバックアップをとる

Last updated at Posted at 2018-03-29

先日EC2インスタンスの定期バックアップスクリプトを組んだので、aws-cliコマンドのメモついでに公開。
セキュリティ面・エラー処理周りの実装があまいので流れとコマンドだけ。

やりたい事

  • ローカルや他サーバから特定のEC2インスタンスのバックアップをとる
  • 世代管理をしたい
  • 削除処理はAMI解除 → スナップショット削除とする

処理の流れ

  1. AMIを作成する
    • 名前は「ホスト名_日付」みたいな感じにしておく
  2. AMI名を利用して解除したいAMIのIDを取得する
    • 世代数と日付の演算を利用して削除したいAMI名を決定する
  3. AMIの解除をする
  4. AMI_IDを使ってスナップショットのIDを取得
  5. スナップショットを削除する

定期実行したい場合

  • 管理サーバあたりの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
0
2
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
0
2