AWS OpsWorks で StartInstance API を使用しているときに Linux インスタンスを起動する方法を教えてください。

最終更新日: 2019 年 6 月 6 日

AWS OpsWorks で StartInstance API 呼び出しを使用しても、Amazon Elastic Compute Cloud (Amazon EC2) Linux インスタンスが起動しません。インスタンスを起動するにはどうすればよいですか?

簡単な説明

StartInstance API 呼び出しを発行すると、OpsWorks は次のプロセスに従います。

  1. オペレーティングシステムの種類に基づいてインスタンスユーザーデータを構築します。
  2. Amazon EC2 RunInstances 呼び出しを開始します。これにより、Amazon EC2 の制限で問題が発生する可能性があります。
  3. インスタンスの起動中にユーザーデータを実行し、Amazon Simple Storage Service (Amazon S3) からダウンロードされた OpsWorks エージェントをインストールします。これは、インスタンスがインターネットに接続できない場合に問題を引き起こす可能性があります。
    注: 新しいバージョンのオペレーティングシステム (Ubuntu 16.04 LTS、CentOS 7) では、systemd がエージェントを管理します。Monit は、サポートされている他のオペレーティングシステムバージョンのエージェントを監視および管理するために使用します。
  4. インスタンスがオンラインになり、エージェントが実行された後、新しいコマンドを継続的にポーリングしてこれらのコマンドを実行します。

これらの段階のいずれかで障害が発生すると、インスタンスが start_failed 状態になる可能性があります。

解決方法

Linux インスタンスを起動するには、以下のトラブルシューティング手順を実行します。

1.    インスタンスのユーザーデータスクリプトの実行に関連するエラーを確認するには、/var/log/aws/opsworks/ にある user-data.log ファイルを確認します。

2.    OpsWorks エージェントがインストールされていることを確認するには、インストールを停止した可能性があるシステム関連の問題について installer.log を確認します。たとえば、installer.log が存在しない場合は、起動ログからエージェントがインストールされたかどうかがわかります。

注: エージェントインストールの失敗の最も一般的な原因は、誤って設定された Amazon Virtual Private Cloud (Amazon VPC) です。VPC 内のインスタンスがインターネットにアクセスできることを確認してください。インターネットにアクセスできないインスタンスは、エージェントをダウンロードしてインストールしようとすると失敗します。

3.    実行中のエージェントプロセスの種類と数を確認するには、次のコマンドを実行します。

$ ps -ef |grep opsworks-agent|wc -l
4

4.    エージェントが実行されていることを確認するため、オペレーティングシステムに適したコマンドを実行します。

エージェントが最新のオペレーティングシステムバージョンで実行されていて systemd を使用していない場合は、次のコマンドを実行して Monit が実行されていることを確認します。

$ sudo service monit status
monit (pid 1769) is running...

または

エージェントがより新しいバージョンのオペレーティングシステムで実行されており、systemd を使用している場合は、journalctl ログを調べます

または

エージェントが System V を使用する古いバージョンのオペレーティングシステムで実行されている場合は、以下を確認します。

root@custsew2:/home/ubuntu# systemctl status opsworks-agent |grep Active
Active: active (running) since Tue 2016-06-28 17:47:03 UTC; 37s ago

注: Windows を使用するスタックの場合は、/var/log/aws/opsworks または C:\ProgramData\OpsWorksAgent のログを調べて、エージェントが実行されていない理由を確認してください。

5.    Monit が実行されていない場合は、/var/log/messages または /var/log/system.log を調べて原因を解決します。

6.    手順 1 から 5 を完了してもエージェントがまだ start_failed 状態にある場合は、opsworks-agent.process_command.log を確認します。このログは、エージェントが処理するためのセットアップコマンドを受け取ったかどうかを示します。また、インスタンスまたはオンプレミスシステムの内部ファイアウォールまたはルーティングテーブルが、エージェントによる OpsWorks エンドポイントへのアクセスを許可していることも確認します。

7.    手順 6 の完了後、エージェントがまだ start_failed 状態にある場合は、次の describe-service-errors コマンドを実行してインスタンスの起動を妨げている可能性がある一般的なエラーを探します。

$ aws opsworks describe-service-errors --instance-id 63133710-806b-40e7-bbd1-8eb3ccd8c20b