インスタンスの内部の問題が原因で接続できない場合、Amazon EC2 インスタンスのデータを取得するにはどうすればよいですか?

最終更新日: 2020 年 3 月 3 日

到達不可能な Amazon Elastic Compute Cloud (Amazon EC2) インスタンスからデータを取得したいと考えています。どうすればよいですか?

簡単な説明

EC2 インスタンスに接続できないが、インスタンスに保存されているデータを取得する必要がある場合は、インスタンスを停止し、ルートボリュームを接続解除して、そのボリュームをレスキューインスタンスに添付します。

EC2 インスタンスがインスタンスストアでバックアップされているか、データを含むインスタンスストアボリュームがある場合には、この手順を実行しないでください。この回復手順では、インスタンスを停止して起動する必要があります。つまり、インスタンスストアボリュームのデータが失われることになります。詳細については、「インスタンスのルートデバイスタイプの判別」を参照してください。

インスタンスが Amazon EC2 Auto Scaling グループの一部である場合、またはインスタンスが AWS Auto Scaling を使用するサービス (Amazon EMR、AWS CloudFormation、AWS Elastic Beanstalk など) によって起動された場合は、インスタンスを停止することでインスタンスが終了される可能性があります。このシナリオでのインスタンスの削除は、Auto Scaling グループのインスタンススケールイン保護設定によって異なります。インスタンスが Auto Scaling グループの一部である場合は、解決手順を開始する前に、一時的に Auto Scaling グループからインスタンスを削除してください。

解決方法

1.    Amazon EC2 コンソールを開きます。

2.    ナビゲーションペインで [インスタンス] をクリックして、障害が発生したインスタンスを選択します。

3.    [インスタンスの状態]、[インスタンスを停止] の順に選択します。

4.    [ストレージ] タブで、[ルートデバイス] を選択します。

5.    [Actions]、[Detach Volume]、[Yes, Detach] の順でクリックします。

6.    [Volume Status] が使用可能であることを確認します。

7.    障害のあるインスタンスと同じアベイラビリティーゾーンで、新しい EC2 インスタンスを起動します。新しいインスタンスは「レスキュー」インスタンスになります。

または、同じ Amazon マシンイメージ (AMI) を使用しかつ障害のあるインスタンスと同じアベイラビリティーゾーンにある場合、アクセスできる既存のインスタンスを使用できます。

8.    レスキューインスタンスが起動したら、ナビゲーションペインで [ボリューム] をクリックし、障害が発生したインスタンスの接続解除したルートボリュームを選択します。

9.    [アクション] を選択してから、[ボリュームのアタッチ] を選択します。

10.    レスキューインスタンス ID (i-xxxxx) を選択し、デバイス名を入力します。デバイス名は /dev/sd[f-p] と指定する必要があります。

11.    [Attach] をクリックします。

12.    SSH を使用してレスキューインスタンスに接続します。

13.    lsblk コマンドを実行して、接続されているボリュームのデバイス名を確認します。

$ lsblk

以下に出力の例を示します。

NAME    MAJ:MIN   RM  SIZE RO TYPE MOUNTPOINT
xvda    202:0     0   15G  0 disk
└─xvda1 202:1     0   15G  0 part /
xvdf    202:80    0  15G  0 disk
    └─xvdf1 202:0 0  15G  0 part

デバイス名は /dev/xvdf になります (ステップ 10 で /dev/sdf を指定した場合)。

14.    マウントディレクトリを作成し、ルート権限でマウントします。

$ sudo mount -o nouuid /dev/xvdf1 /mnt

15.    マウントディレクトリのログを確認します。必要に応じて、AWS コマンドラインインターフェイス (AWS CLI) を使用して Amazon Simple Storage Service (Amazon S3) にログをアップロードするか、scp コマンドを使用してローカル PC にコピーします。

注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

$ sudo cp /mnt/var/log/messages .
$ sudo chmod 644 messages
$ exit

16.    ログを確認したら、unmount/mnt を実行し、添付されたボリュームを解除します。

$ sudo umount /mnt

17.    ボリュームを元のインスタンスに添付します。デバイス名は /dev/xvda です。