インスタンスを開始できず、describe-instances コマンドの実行時に Client.InternalError が表示されます。これを修正するにはどうすればよいですか?

最終更新日: 2021 年 10 月 7 日

Amazon Elastic Compute Cloud(Amazon EC2)インスタンスを起動しようとしていますが、インスタンスが起動せず、エラーメッセージが返されません。または、起動せず、エラーメッセージ「Client.internalError」または「Server.InternalError」を返します。どうすれば解決できますか?

簡単な説明

次の理由により、「Server.InternalError」メッセージが表示される場合があります。

  • Amazon Elastic Block Store (Amazon EBS) ボリュームがインスタンスに正しく添付されていない。
  • インスタンスに添付された EBS ボリュームがエラー状態である。

暗号化された EBS ボリュームがインスタンスに添付されている場合は、「Client.InternalError」メッセージが表示されることがあります。

注: インスタンスが開始せず、エラーコードが表示されない場合は、describe-instances コマンドを実行します。次に、インスタンス ID を指定します。次の例では、MYINSTANCE を、開始しようとしているインスタンスの ID に置き換えています。

aws ec2 describe-instances --instance-id MYINSTANCE --output json

コマンドが返す JSON レスポンスの StateReason メッセージを確認します。

解決方法

EBS ボリュームがインスタンスに正しく添付されていない

EBS ルートボリュームが /dev/sda1 または /dev/xvda としてインスタンスに添付されておらず、2 番目の EBS ボリュームに重複または競合するデバイス名がある場合、インスタンスを停止または開始することはできません。Xen ベースのインスタンスタイプ (c4、m4、t2 など) のみがブロックデバイス名の競合の影響を受けます。Nitro ベースのインスタンス (c5、m5、t3 など) は、ブロックデバイス名の競合の影響を受けません。

1.    describe-instances API を実行して、 StateReason エラーメッセージとエラーコードを確認します。次に、デバイス名の競合がある場合のコマンド出力の例を示します。

awsec2describe-instances--instance-idi-xxxxxxxxxxxxxxx|egrep-A3-iStateReason
"StateReason": {
    "Code": "Server.InternalError",
    "Message": "Server.InternalError: Internal error on launch"
},

2.    Amazon EC2 コンソールを開き、開始できないインスタンスを選択します。

3.    [説明] タブで、ブロックデバイスに一覧表示されているデバイス名を確認します。ブロックデバイスフィールドには、添付されたボリュームのデバイス名がすべて表示されます。

4.    ルートデバイスが正しく添付されており、同じ名前または競合する名前のデバイスが表示されていないことを確認します。

5.    デバイス名が重複または競合するデバイスがある場合は、競合するボリュームを添付解除して名前を変更します。次に、更新されたデバイス名でボリュームを再添付します。

添付された EBS ボリュームがエラー 状態である

1.    describe-instances API を実行して、 StateReason エラーメッセージとエラーコードを確認します。次に、エラー状態の EBS ボリュームが添付されている場合のコマンド出力の例を示します。

aws ec2 describe-instances --instance-ids i-xxxxxxxxxxxxxx 
          "InstanceId": "i-xxxxxxxxxxxxxxxx",
          "InstanceType": "c4.8xlarge",
          "State": {
            "Name": "stopped"
          },
          "StateTransitionReason": "Server.InternalError",

2.    Amazon EC2 コンソールを開き、[ボリューム] を選択して、ボリュームのステータスが [エラー] であることを確認します。オプションは、エラー状態のボリュームがルートボリュームであるかセカンダリボリュームであるかによって異なります。

エラー状態のボリュームがセカンダリボリュームの場合は、ボリュームを添付解除します。これで、インスタンスを開始できます。

エラー状態のボリュームがルートボリュームであり、ボリュームの既存のスナップショットがある場合、以下を行います。

ボリュームを添付解除します

スナップショットで新しいボリュームを作成します

元のインスタンスのデバイス名を使用して、新しいボリュームをインスタンスに添付します。インスタンスを起動します。

注: エラー状態のボリュームがルートボリュームで、ボリュームの既存のスナップショットがない場合、インスタンスを再起動することはできません。インスタンスを再構築する必要があります。

添付されたボリュームが暗号化されており、AWS Identity and Access Management (IAM) の権限またはポリシーが正しくない

1.    describe-instances API を実行して、 StateReason エラーメッセージとエラーコードを確認します。次に、暗号化されたボリュームがインスタンスに添付されていて、アクセス権限またはポリシーの問題がある場合のコマンド出力の例を示します。

aws ec2 describe-instances --instance-ids i-xxxxxxxxxxxxxxxxx
"StateReason": {
     "Message": "Client.InternalError: Client error on launch",
     "Code": "Client.InternalError"
   },

2.    以下について確認してください。

注: ボリュームが暗号化されているかどうかを確認するには、Amazon EC2 コンソールを開き、[ボリューム] を選択します。暗号化されたボリュームは、暗号化済み暗号化列に表示されます。