【入門編】AWS Backupを使ってEC2のAMIバックアップと復元を行う

記事タイトルとURLをコピーする

CI部2課の山﨑です。

AWSではEC2のAMI、EBSのスナップショット、RDSのスナップショットなどAWSサービスごとに様々なバックアップ方法があります。本記事ではこれらを一元管理することが可能なAWS Backupというサービスについて、その仕組みや基本操作を整理していきます。

AWS Backupとは

AWSドキュメントには以下のように紹介されています。バックアップの一元管理とバックアップアクティビティのモニタリングが可能であるということさえ押さえておくと良いです。

AWS Backup はフルマネージド型のバックアップサービスであり、AWSクラウド内およびオンプレミスのサービス間でデータのバックアップを簡単に一元化および自動化できます。を使用するとAWS Backup、バックアップポリシーを設定しAWS、リソースのバックアップアクティビティを一元的にモニタリングできます。

docs.aws.amazon.com

仕組み

AWS Backupではバックアップボールトと呼ばれるバックアップの保存先に対して、バックアッププランで定めたルールに基づいたジョブを実行することでバックアップ(復旧ポイント)を取得しています。ジョブの実行対象、つまりバックアップを取得したいAWSリソースはタグもしくはリソースIDを指定することでバックアッププランと関連付けます。

f:id:swx-yamasaki:20210429123118p:plain
AWS Backupの仕組み(簡略図)

図ではバックアップボールトにKMSが記載されていますが、バックアップボールトに設定するKMSを使用して暗号化されるのはEFSのみです。その他のAWSサービス、例えばEBSのスナップショットでは EBS ボリュームの暗号化に使用されているものと同じ暗号化キーで自動的に暗号化されます。

docs.aws.amazon.com

料金

AWS Backupでは最低料金および初期費用は発生せず、以下の3つの料金の合算金額が請求されます。

  • バックアップストレージの料金
  • 復元の料金
  • クロスリージョンのデータ転送料金表

aws.amazon.com

AWS Backupをセットアップしてみる

バックアップボールトを作成

まずはバックアップの保存先であるバックアップボールトを作成します

f:id:swx-yamasaki:20210429120752p:plain

バックアッププランを作成

次にバックアッププランを作成しジョブの実行ルールを定義します。実行ルールではバックアップの保存先(バックアップボールト)やバックアップ頻度の指定、バックアップウィンドウの設定などを行います。

f:id:swx-yamasaki:20210429121018p:plain

バックアッププランをAWSリソースと関連付ける

最後にバックアッププランをバックアップを取得したいAWSリソースと関連付けます。これをAWS Backupではリソースの割り当てと呼びます。

f:id:swx-yamasaki:20210429121649p:plain

f:id:swx-yamasaki:20210429121700p:plain

動作確認

少し時間を空けてからジョブを確認すると実行されていることが確認できました

f:id:swx-yamasaki:20210429140133p:plain

復旧ポイントからEC2を復元する

取得されたバックアップ(復旧ポイント)は保護されたリソースというメニューから確認することができます。

f:id:swx-yamasaki:20210429140436p:plain

復元したいリソースを選択して復元をクリックし、必要な情報を入力して復元を実行します。

f:id:swx-yamasaki:20210429140709p:plain

f:id:swx-yamasaki:20210429144153p:plain

復元する際にAWS Backupに渡すIAMロールの権限について

あいにくデフォルトのIAMロールに与えられている権限では不足しているためインスタンスを復元することができません。そのため今回はAWSBackupOperatorRoleというIAMロールを新規作成して復元時にAWS Backupに渡しました。

f:id:swx-yamasaki:20210429150310p:plain

詳細はIAM設計の話になってしまうため割愛しますが、少なくとも以下のポリシーを付与したIAMロールを指定すればEC2インスタンスの復元が可能です。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole", #EC2にIAMロールをアタッチする際に必要
            "Resource": "*"
        },
        {
            "Action": [
                "ec2:DescribeSnapshots",
                "ec2:DescribeVolumes",
                "ec2:describeAvailabilityZones",
                "ec2:DescribeVpcs",
                "ec2:DescribeAccountAttributes",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeImages",
                "ec2:DescribeSubnets",
                "ec2:DescribePlacementGroups",
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceTypes",
                "ec2:CreateVolume",
                "ec2:RunInstances"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

しばらくすると復元ジョブが完了してインスタンスが起動していることが確認できました。

f:id:swx-yamasaki:20210429144054p:plain
AWS Backupのコンソール画面

f:id:swx-yamasaki:20210429144108p:plain
EC2のコンソール画面

まとめ

復元する際にAWS Backupに渡すIAMロールの権限について、デフォルトのIAMロールだと復元ができないという点は盲点でしたがその他の操作についてはコンソールをクリックしていくだけでしたのでスムーズに設定することができました。AWSでバックアップをする際は是非AWS Backupをご活用ください。

山﨑 翔平 (Shohei Yamasaki) 記事一覧はコチラ

2019/12〜2023/2までクラウドインテグレーション部でお客様のAWS導入支援を行っていました。現在はIE(インターナルエデュケーション)課にて採用周りのお手伝いや新卒/中途オンボーディングの業務をしています。2023 Japan AWS Top Engineers/2023 Japan AWS Ambassadors