「AWS CloudShellからAWS CLIコマンドを実行し、AWS BackupのリカバリポイントからEC2をリストアする」という作業を実施する機会がありました。
本記事では、AWS Backupのサービスの説明や、AWS CloudShellを使ったコマンドによるEC2リストア実施手順について紹介します。
AWS Backupとは
AWS Backupは、AWSサービスのバックアップ取得とデータ管理を提供するリソースです。
AWS Backupについては、下記ブログにて用語の紹介や特徴について記載しているので、興味ある方はぜひご覧ください!
blog.jbs.co.jp
AWS CloudShellとは
AWS CloudShellは、ブラウザベースの事前認証されたシェルです。
AWSマネジメントコンソールから直接起動ができ、Bash、PowerShell、Z シェルなどの好みのシェルを使用して AWS CLI コマンドを実行できます。
AWS CloudShellのコマンド実行画面への移動方法は、以下2通りあります。
1. [サービス]>[開発用アプリケーション]>[CloudShell]をクリックする。
2. AWSマネジメントコンソール右上にある、CloudShellボタンをクリックする。
AWS CLIコマンドを使用したEC2リストア手順
AWS Backupにて取得されたバックアップからEC2をリストアする方法として、AWS CloudShellにてAWS CLIコマンドを使用する場合の手順を紹介します。
手順
この手順ではAWS Backupにて対象のEC2のバックアップが定期的に取得されていることを前提とします。
- 対象のEC2の復旧ポイント(AMI)を取得
- メタデータの取得
- リストアするEC2のメタデータ作成
- 復旧ポイントを使用してリストア
- リストアジョブの確認
これら5つの手順について、実際のAWS CLI画面を用いて紹介します。
対象のEC2の復旧ポイント(AMI)を取得
まずは対象リソースの復旧ポイントを取得します。
定期的にバックアップを取得している場合は、複数の復旧ポイントがあるのでどの時点での状態をリストアしたいのか指定するために復旧ポイントを特定します。
復旧ポイントの一覧を取得するには、「list-recovery-points-by-resource」コマンドを使用します。
aws backup list-recovery-points-by-resource --resource-arn arn:aws:ec2:ap-northeast-1:アカウントID:instance/対象のEC2インスタンスID
コマンドの実行結果として、対象のEC2の復旧ポイントがすべて表示され、復旧ポイントARN、バックアップ日時(CreationDate)、保管されているバックアップボールト名などの情報を取得することができます。
復旧ポイントの作成された日付が新しい順で表示されるようです。
実行結果で表示された情報のうち、バックアップボールト名とAMI IDは、以降の手順で使用するためメモしておきます。
インスタンスメタデータの取得
対象の復旧ポイントのAMIが取得できたら、そのAMIのインスタンスメタデータを取得します。
インスタンスメタデータとは、インスタンスのホスト名、イベント、およびセキュリティグループなどの情報を含むデータになります。
インスタンスメタデータを取得するには、「get-recovery-point-restore-metadata」コマンドを使用します。
aws backup get-recovery-point-restore-metadata --backup-vault-name バックアップボールト名 --recovery-point-arn arn:aws:ec2:ap-northeast-1::image/AMI ID
コマンドの実行結果として、下記のようにバックアップ情報やインスタンスメタデータが出力されます。
この出力結果を編集するため、画像赤枠内のRestoreMetadataの内容を全てコピーします。
リストアするEC2のメタデータ作成
上記手順でコピーしたRestoreMetadataの中から、下記項目以外を削除したコマンドを作成します。
VpcId |
---|
Monitoring |
CapacityReservationSpecification |
InstanceInitiatedShutdownBehavior |
DisableApiTermination |
KeyName |
HibernationOptions |
EbsOptimized |
Placement |
aws:backup:request-id |
InstanceType |
NetworkInterfaces |
この時、NetworkInterfacesフィールド内のメタデータからは「AssociatePublicIpAddress」と「NetworkInterfaceId」のデータを削除する必要があります。これによってリストアを実施したEC2インスタンスへ関連付けられるENIが、自動的に作成される挙動となります。
また、「PrivateIpAddress」では、リストア後のEC2インスタンスのプライベートIPアドレスを指定します。
復旧ポイントを使用してリストア
作成したメタデータ情報をもとに下記コマンドを実行します。
aws backup start-restore-job --region ap-northeast-1 --recovery-point-arn "リカバリーポイントARN" --iam-role-arn "IAM Role ARN" --metadata '{RestoreMetadataフィールドを記載}'
コマンド実行結果に表示されるRestoreJobIDを記録します。
リストアジョブの確認
下記コマンドを実行してリストアジョブの進行状況を確認します。
aws backup describe-restore-job --restore-job-idリストアジョブID
StatusがCOMPLETEDとなっていたらリストアは完了になります。
CreateResourceArnにてリストア後のEC2インスタンスIDを取得可能です。
インスタンスIDをもとにリストアしたEC2インスタンス情報を検索してその他情報を取得可能です。
最後に
本記事ではAWS CloudShellより、コマンドにてAWS Backupの復旧ポイントからEC2インスタンスをリストアする方法について記載しました。
参考にしていただけますと幸いです。
徐 一静(日本ビジネスシステムズ株式会社)
クラウドソリューション本部所属。主にAWSに関連する設計、構築を担当しています。Azureでも設計/構築経験ありです。 趣味はお笑いライブに行くことです。
担当記事一覧