web-dev-qa-db-ja.com

AWS EC2インスタンスのバックアップソリューション

Amazon EC2インスタンスのバックアップソリューションを探しています。私はこれを見つけました: http://www.n2ws.com そして私は他のものがあるかどうか知りたかったです。

ありがとうございました

PS:Amazonソリューションを使用してRDSデータベースを自動的にバックアップすることは可能ですが、EC2インスタンスには何もありません...ありますか?

17

Skeddly を数か月間使用して、EC2インスタンスに接続されたEBSボリュームを自動的にバックアップしています。

今のところ、本当に満足しています。バックアップするインスタンスを定義する方法が気に入りました。特定のタグを持つインスタンスのみがバックアップされます。バックアップするインスタンスにこのタグを追加するだけです。インスタンスを追加するたびにSkeddlyで変更を行う必要はありません。 Skeddlyで2つのアクションを定義する必要がありました。インスタンスをバックアップするアクションと、古いスナップショットを削除するアクションです。

また、アクション(バックアップと期限切れ)が成功したかどうかを通知するメールを受け取ります。

10

EC2インスタンスの自動バックアップに100%AWSソリューションが必要な場合は、AWSラムダがあります。

次のようなものでPythonベースのラムダを作成します。

import boto3

BACKUP_VOLUMES = [
  'vol-xxxxxxxx'
]

def lambda_handler(event, context):
    ec2 = boto3.resource('ec2')
    for volume in BACKUP_VOLUMES:
        ec2.create_snapshot(VolumeId=volume, Description='Automated backup')

そして、毎日実行されるようにイベントソースを構成します。そして、ブーム、信頼できる手間のかからない自動化されたEC2バックアップは、それらを駆動する別のインスタンスとcronジョブ、またはサードパーティのサービスを必要としません。 SES APIを使用すると、そのラムダから確認メールを送信することもできます。

PS:ラムダのIAMロールにEC2スナップショットを操作する権限があることを確認してください。例:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "ec2:CreateSnapshot",
                "ec2:DeleteSnapshot",
                "ec2:DescribeSnapshots"
            ],
            "Resource": "*"
        }
    ]
}
7
Pol

「EC2インスタンス」が本当に「EBSドライブを備えたEC2インスタンス」を意味する場合は、AWSコンソールとAWS APIから利用できるEBSのスナップショット機能が探しているものです。

EBS Docs から:

Amazon EBSは、Amazon S3に保持されるボリュームのポイントインタイムスナップショットを作成する機能も提供します。これらのスナップショットは、新しいAmazon EBSボリュームの開始点として使用でき、長期的な耐久性のためにデータを保護します。同じスナップショットを使用して、必要な数のボリュームをインスタンス化できます。これらのスナップショットはAWSリージョン全体にコピーできるため、地理的な拡張、データセンターの移行、災害復旧のために複数のAWSリージョンをより簡単に活用できます。

Amazonは、スナップショットに関するスケジューリングや保持タイプのポリシーを提供していませんが、AWS APIを利用するサードパーティのツールがいくつかあります。

6
Chris M.

以下は、インスタンスをAMIイメージにバックアップするAWS Lambda Boto3ベースのスクリプトです。

import boto3, collections, datetime, sys

ec = boto3.client('ec2')

def lambda_handler(event, context):

    reservations = ec.describe_instances(        
        Filters=[
        {'Name': 'tag-key', 'Values': ['backup', 'Backup']},
    ]
    ).get(
        'Reservations', []
    )

    instances = sum(
        [
            [i for i in r['Instances']]
            for r in reservations
        ], [])

    print("Found %d instances that need backing up" % len(instances))

    to_tag = {}

    for instance in instances:
        try:
            retention_days = [
                int(t.get('Value')) for t in instance['Tags']
                if t['Key'] == 'retention'][0]
        except IndexError:
            retention_days = 7

        create_time = datetime.datetime.now()
        create_fmt = create_time.strftime('%Y-%m-%d_%H-%M-%S')

        AMIid = ec.create_image(InstanceId=instance['InstanceId'], Name="backup of " + instance['InstanceId'] + " dated " + create_fmt, Description="Lambda-created AMI of instance " + instance['InstanceId'] + " from " + create_fmt, NoReboot=True, DryRun=False)

        to_tag[retention_days] = AMIid['ImageId']

        print("Retaining AMI %s of instance %s for %d days" % (AMIid['ImageId'],
                                                               instance['InstanceId'],
                                                               retention_days)
             )

    print(to_tag.keys())

    for retention_days in to_tag.keys():
        delete_date = datetime.date.today() + datetime.timedelta(days=retention_days)
        delete_fmt = delete_date.strftime('%m-%d-%Y')
        print("Will delete %d AMIs on %s" % (len(to_tag[retention_days]), delete_fmt))

        ec.create_tags(
            Resources=[to_tag[retention_days],],
            Tags=[
                {'Key': 'DeleteOn', 'Value': delete_fmt},
            ]
        )

ここから を取得し、Python 3。

3
Suncatcher

私が働いている会社は、AmazonのS3、EBS、EC2を創業以来ほぼ使用しています。完成してから4日後に2台(開発1台と本番1台)の仮想サーバーが失われ、翌夜EC2で解放されるようにスケジュールされた後、それはひどく明白になりました。簡単に言えば、非常に小さく、軽量で、あらゆる状況にほぼ設定できるスタンドアロンアプリケーションは見つかりませんでした。

AWS .NET SDKを使用すると、上記のアプリケーションを1日足らずで作成でき、社内のWindows Server 2008 R2サーバーでタスクスケジューラを使用できました。多くのシナリオを経て、次のスケジュールで解決しました。EC2インスタンスのイメージは毎週作成され、EBSスナップショットは毎日作成されます。 31日より古いEC2インスタンスは削除され、EBSスナップショットは60日後に削除されます。これは、独自の内部スケジューリングコードでバックアップを実行するはずのスタンドアロンアプリケーションで以前に焼き付けられていたクライアントとの契約で締結したものです/機構。それは決して実行されなかった、そして彼らがそれを設定した後に誰もそれを見なかった。アプリケーションが成熟するにつれ、開発者へのバックアップサマリー/ログ電子メール用のシンプルメールサービス(SES)と、プロセスを記録するためのシンプルキューサービス(SQS)を用意する予定です。

お役に立てれば。

3
Jim

GUIで簡単に管理できるように、 Skeddly もあります。 CAD 0.15です。これをすべて無料で実行することもできます。 this から始めるのに適したスクリプトは次のとおりです。

見つけたクラウド保護マネージャー製品(www.n2ws.com)は、EBSボリュームを個別にバックアップする以外に、完全なEC2インスタンスの自動バックアップやRDSスナップショットをサポートしています。また、お客様が探していたスケジューリング、データ保持ポリシー、自動アラートオプション、およびAWSのその他のバックアップ関連機能も備えています。

EC2インスタンスに匹敵する自動バックアップを提供する他のサードパーティ製品は見つかりませんでしたが、一部のクラウド管理コンソールでは、スナップショットのスケジュール設定とデータ保持ポリシーの作成が可能です。

2
OK1

重要なアプリケーションの場合、バックアップソリューションは、単にスナップショットをスケジュールするだけではありません。

アプリケーションサポート、バックアップポリシー、強力なリカバリオプションなどの機能を期待できます。

あなたは私の投稿でそれについて読むことができます:

http://www.n2ws.com/blog/tier-1-application-backup-on-Amazon-cloud.html

これはn2wsサイトからのものであり、CPM製品も参照しています。

2
uriwo

ちょっと。 EBSボリュームのスナップショットを定期的に作成できます。 UIにはこれを自動的に実行する機能はありませんが、APIを使用すると実行できます。独自のバックアップスクリプトをロールするか、公開されているスクリプトを検索できます。

1
datasage

これは、AMIバックアップを自動化するスクリプトスクリプトです。 VPC内のすべてのインスタンスのインスタンスIDが見つかり、AMIバックアップが作成されます!

 #!/bin/bash

 #Script to Automate AMI backup

echo "----------------------------------\n   `date`   \n----------------------------------"

aws ec2 describe-instances --filters Name=vpc-id,Values=vpc-1c927479 |   awk '{ print $8 }' | sort -n   | grep  "i-" > /tmp/instanceid.txt



 #echo "instance-`date +%d%b%y`"-i-29efe0e4 > /tmp/aminame.txt

echo "Starting the Daily AMI creation: "
 #echo -e "Starting the Daily AMI creation: `cat /tmp/aminame.txt`\n"

 #To create AMI of defined instance

for i in $(cat /tmp/instanceid.txt); do
        echo "Creating AMI for Instance id $i ......."

echo "instance-`date +%d%b%y`-$i" > /tmp/aminame.txt

aws ec2 create-image --instance-id $i --name "`cat /tmp/aminame.txt`" --description "This is created by AMI-backup.sh" --no-reboot | grep -ir AMI | awk '{print $4}' > /tmp/amiID.txt

echo  "AMI Name is: `cat /tmp/aminame.txt`\n"

echo done 
done
echo done
1
Ashish Karpe

Cloudwatchが導入された時期を忘れてしまいましたが、それによって間違いなく スケジュールされた自動EBSスナップショット が可能になります。

AWS Lambdaを使用したPolの回答は依然として関連しています。 EBSスナップショットのスケジュール設定 および 古いスナップショットの削除 に関するブログ記事がいくつかあります。

1
davewasthere

すべてのaws ec2インスタンスをバックアップする簡単な方法は、 noovolari を使用することです。それはあなたが定期的なバックアップをスケジュールすることを可能にし、ファイルレベルの回復機能を備えており、非常に簡単な方法で以前のスナップショットを回復することができます。また、5つのec2インスタンスに対して無制限の無料利用枠が設定されているため、問題はありません。

しばらくの間、いくつかのインフラストラクチャで使用しており、問題なく動作します。

0
Andrea Cavagna

約1週間使用し始めたScalrと呼ばれるオープンソースプロジェクトがあり、EBSボリュームの自動スナップショット/バックアップをスケジュールできる機能があります。 Scalrは実際にはクラウド管理ソリューションであり、まだ試していない素晴らしい機能がたくさんありますが、楽しみにしています。

有料版もありますが、今のところは無料のオープンソース版に飽き飽きしています。 ScalrインストーラーはGithubで入手できます: https://github.com/Scalr/installer-ng ScalrソースコードもGitubにあります: https://github.com/Scalr/scalr インストール手順はScalr wikiにあります: https://scalr-wiki.atlassian.net/wiki/x/0Q8b

0
punkdata

AutomatiCloudを使用して、EC2ボリュームとRDSインスタンスをバックアップできます。 AutomatiCloudを使用すると、バックアップのスケジュールを定義し、構成可能な保持期間後にクリーンアップできます。また、成功/失敗した場合に電子メール通知を送信します。そしてそれは無料です! www.automaticloud.net

免責事項:私は作者です

0
Stephan Buhre