EC2 インスタンスを開始または起動できないのはなぜですか?

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

Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを開始または起動できません。この問題をトラブルシューティングする方法を教えてください。

簡単な説明

EC2 インスタンスを開始または起動できない原因として考えられる理由は複数あります。インスタンスを開始しようとしたときにエラーコードが表示されない場合は、AWS Command Line Interface (AWS CLI)describe-instances コマンドを実行します。その後、インスタンス ID を指定して、問題の理由を表示します。次の例では、MYINSTANCE を、開始しようとしているインスタンスの ID に置き換えています。

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

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

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

次の例では、返される StateReason は「Client.InternalError」です。

"StateReason": {
     "Message": "Client.InternalError: Client error on launch",
     "Code": "Client.InternalError"
   },

解決方法

インスタンスの起動を妨げる可能性のある、よく見られるエラーを以下に示します。

InsufficientInstanceCapacity

エラーメッセージ: 「RunInstances オペレーションを呼び出す際に、エラー (InsufficientInstanceCapacity) が発生しました (再試行回数が上限に達しました: 4)。現在、リクエストしたアベイラビリティーゾーンに十分な容量がありません。」 このエラーは、リクエストを完了するのに十分なオンデマンド容量がない場合に発生します。

このエラーの解決方法については、EC2 インスタンスを開始または起動する際に発生する、InsufficientInstanceCapacity エラーのトラブルシューティング方法を教えてくださいをご参照ください。

InstanceLimitExceeded

エラーメッセージ: 「クォータの制限内でさらに実行できるインスタンス数は 0 個です。」 このエラーは、リージョンで許可されている最大のインスタンスを起動した場合に発生します。

このエラーの解決方法については、EC2 インスタンスを開始または起動する際に発生する、InstanceLimitExceeded エラーのトラブルシューティング方法を教えてくださいをご参照ください。

UnauthorizedOperation

UnauthorizedOperation エラーは、インスタンスを起動しようとしているユーザーに必要なアクセス権限がないことを示します。このエラーの解決に関する詳細については、EC2 インスタンスを起動しようとすると、「このオペレーションを実行する権限がありません」というエラーメッセージが表示されるのはなぜですか? を参照してください。

リクエストされた設定は現在サポートされていません。

このエラーは、次の 2 つの問題が原因です。

1.    指定されたインスタンスタイプは、リクエストされたアベイラビリティーゾーンではサポートされていない。AWS CLIaws ec2 describe-instance-type-offerings コマンドを実行して、特定のアベイラビリティーゾーンでそのインスタンスタイプが利用可能かどうかを確認します。その後、サポートされているアベイラビリティーゾーンでインスタンスを起動します。

例えば、次のコマンドを使用して、us-east-1 のすべてのアベイラビリティーゾーンで c5.2xlarge インスタンスタイプが利用可能かどうかをチェックします。

aws ec2 describe-instance-type-offerings --location-type availability-zone --filters Name=instance-type,Values=c5.2xlarge --region us-east-1

2.    インスタンスの起動に使用された Amazon マシンイメージ (AMI) は、選択したインスタンスタイプをサポートしていません。インスタンスタイプまたはファミリーを選択する前に、AWS ドキュメントの AMI の説明を参照してください。この問題は、AWS Marketplace AMI を使用し、AWS CLI を使用して起動するときに一般的に発生します。Amazon EC2 コンソールからインスタンスを起動すると、サポートされていないインスタンスは利用できません。

Client.InternalError

このエラーが表示される原因として考えられる理由はいくつかあります。

  • Amazon Elastic Block Store (Amazon EBS) ボリュームがインスタンスに正しくアタッチされていない。
  • インスタンスにアタッチされた EBS ボリュームが ERROR 状態である。
  • 暗号化された EBS ボリュームがインスタンスにアタッチされているが、復号のために AWS Key Management Service (AWS KMS) にアクセスする権限がない。

これらの問題の解決方法の詳細については、インスタンスを開始できず、describe-instances コマンドの実行時に Client.InternalError が表示されます。この問題を解決する方法を教えてくださいを参照してください。

ディスクがいっぱいになったエラー

ディスクがいっぱいになったエラーは、インスタンスの領域が不足し、マシンが起動されるとすぐに監査サービスがそのマシンを停止する場合に発生します。

注: 先に進む前に、ボリュームのスナップショットを作成して、データをバックアップするのがベストプラクティスです。

重要:

これらの解決手順では、インスタンスを停止して開始する必要があります。以下の点に注意してください。

  • インスタンスが停止すると、インスタンスストアボリュームのデータは失われます。詳細については、インスタンスのルートデバイスタイプの判別を参照してください。
  • インスタンスが Amazon EC2 Auto Scaling グループの一部である場合、インスタンスの停止によってインスタンスが終了されることがあります。Amazon EMR、AWS CloudFormation、AWS Elastic Beanstalk で起動されたインスタンスは、AWS Auto Scaling グループの一部である可能性があります。このシナリオでのインスタンスの終了は、Auto Scaling グループのインスタンスのスケールイン保護の設定に応じて異なります。インスタンスが Auto Scaling グループの一部である場合は、解決手順を開始する前に、一時的に Auto Scaling グループからインスタンスを削除してください。
  • インスタンスを停止および再開すると、インスタンスのパブリック IP アドレスが変更されます。インスタンスに外部トラフィックをルーティングするときは、パブリック IP アドレスではなく、Elastic IP アドレスを使用するのがベストプラクティスです。

ディスクがいっぱいになったエラーを解決するには、次の手順を実行します。

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

2.    ナビゲーションペインで [Instances] (インスタンス) を選択し、インスタンスを選択します。

3.    インスタンスを停止します

4.    停止したインスタンスから EBS ルートボリューム (/dev/xvda または /dev/sda1) をデタッチします。

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

6.    ステップ 4 でデタッチしたルートボリュームを、セカンダリデバイスとしてレスキューインスタンスにアタッチします。

: セカンダリボリュームをアタッチするときは、異なるデバイス名を使用できます。

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

8.    ステップ 6 でレスキューインスタンスにアタッチした新しいボリュームのマウントポイントディレクトリを作成します。以下の例のマウントポイントディレクトリは /mnt/rescue です。

$ sudo mkdir /mnt/rescue

9.    ステップ 8 で作成したディレクトリにボリュームをマウントします。

$ sudo mount /dev/xvdf /mnt/rescue

注意: デバイス (上記の例の /dev/xvdf) は、異なるデバイス名でレスキューインスタンスにアタッチされている場合があります。lsblk コマンドを使って、使用可能なディスクデバイスとマウントポイントを表示し、正しいデバイス名を確認してください。

10.    ルートボリュームのサイズを大きくします

11.    パーティションを拡張します

12.    umount コマンドを実行して、ボリュームのマウントを解除します。

$ sudo umount /mnt/rescue

13.    一時的なインスタンスからボリュームをデタッチします。

14.    ボリュームを元のインスタンスにアタッチしてから、インスタンスを起動してそれが正常に起動することを確認します。

15.    監査サービスの設定を見直して、空き領域がなくなった場合にマシンを停止 (シャットダウン) するように設定されていないことを確認します。監査サービスの設定には、Amazon Linux および Amazon Linux 2 の /etc/audit/auditd.conf に次のオプションを含める必要があります。

max_log_file_action = ROTATE
admin_space_left_action = SUSPEND
disk_full_action = SUSPEND
disk_error_action = SUSPEND