Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?
@eme-fes456

AWSのインスタンスをバックアップする

More than 3 years have passed since last update.

AWSのインスタンスのバックアップを取ろうと思い、
下記参考サイトのスクリプトを実行したところ正常に動かなかったので一部修正しました。

jqをインストールしています。

#!/bin/sh

# インスタンスIDを取得
INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)

# バックアップ対象のインスタンス名
INSTANCE_NAME="インスタンス名"

# 本日の日付
DATE_CURRENT=`date +%Y-%m-%d`

# 本日の日時
TIME_CURRENT=`date +%Y%m%d%H%M`

# 何日後に削除するか
PURGE_AFTER_DAYS=3

# ↑のタイムスタンプ
PURGE_AFTER=`date -d +${PURGE_AFTER_DAYS}days -u +%Y-%m-%d`

#バックアップを作成する
AMI_ID=`aws ec2 create-image --instance-id ${INSTANCE_ID} --name "${INSTANCE_NAME}_${TIME_CURRENT}" --no-reboot  | jq '.ImageId' | sed 's/"//g'`

# AMIを検索するためのタグを作成する
aws ec2 create-tags --resources ${AMI_ID} --tags Key=Name,Value="${INSTANCE_NAME}" Key=PurgeAllow,Value=true Key=PurgeAfter,Value=$PURGE_AFTER

# タグを条件にして削除可能なバックアップを検索する
AMI_PURGE_ALLOWED=`aws ec2 describe-tags --filters "Name=resource-type,Values=image" "Name=key,Values=PurgeAllow" | jq '.Tags[].ResourceId' | sed 's/"//g'`

for AMI_ID in ${AMI_PURGE_ALLOWED}; do
  PURGE_AFTER_DATE=`aws ec2 describe-tags --filters "Name=resource-type,Values=image" "Name=resource-id,Values=${AMI_ID}" "Name=key,Values=PurgeAfter" | jq '.Tags[].Value' | sed 's/"//g'`

  if [ -n ${PURGE_AFTER_DATE} ]; then
    DATE_CURRENT_EPOCH=`date -d ${DATE_CURRENT} +%s`
    PURGE_AFTER_DATE_EPOCH=`date -d ${PURGE_AFTER_DATE} +%s`

    if [[ ${PURGE_AFTER_DATE_EPOCH} < ${DATE_CURRENT_EPOCH} ]]; then
      # タグを見て削除対象か判定を行い、対象であればバックアップを削除する
      aws ec2 deregister-image --image-id ${AMI_ID}

      SNAPSHOT_ID=`aws ec2 describe-images --image-ids ${AMI_ID} | jq '.Images[].BlockDeviceMappings[].Ebs.SnapshotId' | sed 's/"//g'`
      aws ec2 delete-snapshot --snapshot-id ${SNAPSHOT_ID}
    fi
  fi
done

参考サイト

https://dev.classmethod.jp/cloud/aws/aws-shellscript-summary/#toc-2
AMIとEBSのバックアップを作成する
AMIのバックアップの取得

2
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
2
Help us understand the problem. What is going on with this article?