

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# スタックエージェント OpsWorks CLI の使用
<a name="troubleshoot-debug-cli"></a>

**重要**  
この AWS OpsWorks Stacks サービスは 2024 年 5 月 26 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。できるだけ早くワークロードを他のソリューションに移行することを強くお勧めします。移行についてご質問がある場合は、[AWS re:Post](https://repost.aws/) または[AWS プレミアムサポート](https://aws.amazon.com/support)を通じて AWS サポート チームにお問い合わせください。

**注記**  
エージェントの CLI は Linux インスタンスにのみ使用できます。

すべてのオンラインインスタンスで、 OpsWorks スタックは サービスと通信する エージェントをインストールします。次に OpsWorks 、 スタックサービスはエージェントにコマンドを送信して、ライフサイクルイベントが発生したときにインスタンスで Chef 実行を開始するなどのタスクを実行します。Linux インスタンス用に、エージェントにはトラブルシューティングに役立つコマンドラインインターフェイス (CLI) が用意されています。エージェント CLI コマンドを実行するには、[SSH を使用してインスタンスに接続](workinginstances-ssh.md)します。その後、次のようなさまざまなタスクを行うエージェント CLI コマンドを実行します。
+ レシピを実行する。
+ Chef ログを表示する。
+ [スタック設定およびデプロイメント JSON](workingcookbook-json.md) を表示する。

インスタンスへの SSH 接続をセットアップする方法の詳細については、「[SSH でのログイン](workinginstances-ssh.md)」を参照してください。[SSH とスタックに対する sudo 権限](opsworks-security-users.md)も必要です。

このセクションでは、エージェント CLI をトラブルシューティングに使用する方法について説明します。詳細およびコマンドリファレンスについては、「[OpsWorks スタックエージェント CLI](agent.md)」を参照してください。

**Topics**
+ [レシピの実行](#troubleshoot-debug-cli-recipes)
+ [Chef ログの表示](#troubleshoot-debug-cli-log)
+ [スタック設定およびデプロイメント JSON の表示](#troubleshoot-debug-cli-json)

## レシピの実行
<a name="troubleshoot-debug-cli-recipes"></a>

エージェント CLI の [`run_command`](agent-run.md) コマンドは、以前に実行したコマンドを再実行するようエージェントに指示します。トラブルシューティングに最も役立つコマンド (`setup`、`configure`、`deploy`、`undeploy`) は、それぞれライフサイクルイベントに対応しています。これらのコマンドは、Chef 実行を開始して関連付けられたレシピを実行するようエージェントに指示します。

**注記**  
`run_command` コマンドで実行されるのは、指定されたコマンドに関連付けられたレシピ (通常はライフサイクルイベントに関連付けられたレシピ) のグループに限られています。このコマンドを使用して特定のレシピを実行することはできません。指定した 1 つ以上のレシピを実行するには、[Execute Recipes スタックコマンド](workingstacks-commands.md)を使用するか、同等の CLI または API アクション ([https://docs.aws.amazon.com/cli/latest/reference/opsworks/create-deployment.html](https://docs.aws.amazon.com/cli/latest/reference/opsworks/create-deployment.html) および [https://docs.aws.amazon.com/opsworks/latest/APIReference/API_CreateDeployment.html](https://docs.aws.amazon.com/opsworks/latest/APIReference/API_CreateDeployment.html)) を使用します。

`run_command` コマンドは、カスタムレシピ (特に、コンソールから直接トリガーできない、Setup および Configure の各ライフサイクルイベントに割り当てられたレシピ) をデバッグする際に役立ちます。`run_command` を使用すると、インスタンスを起動または停止しなくても、必要な頻度で特定のイベントのレシピを実行できます。

**注記**  
OpsWorks スタックは、クックブックリポジトリではなく、インスタンスのクックブックキャッシュからレシピを実行します。 OpsWorks スタックは、インスタンスの起動時にクックブックをこのキャッシュにダウンロードしますが、その後クックブックを変更してもオンラインインスタンスのキャッシュは自動的に更新されません。インスタンスの起動以降にクックブックを変更した場合は、[Update Cookbooks スタックコマンド](workingstacks-commands.md)を実行して、リポジトリの最新バージョンでクックブックキャッシュを更新する必要があります。

エージェントは最新のコマンドだけをキャッシュに入れます。これらのコマンドを表示するには、キャッシュされたコマンドと各コマンドの実行時刻のリストを返す [`list_commands`](agent-list.md) を実行します。

```
sudo opsworks-agent-cli list_commands
2013-02-26T19:08:26        setup
2013-02-26T19:12:01        configure
2013-02-26T19:12:05        configure
2013-02-26T19:22:12        deploy
```

最新のコマンドを再実行するには、次のコマンドを実行します。

```
sudo opsworks-agent-cli run_command
```

指定したコマンドの最新のインスタンスを再実行するには、次のコマンドを実行します。

```
sudo opsworks-agent-cli run_command command
```

たとえば、Setup レシピを再実行するには、次のコマンドを実行します。

```
sudo opsworks-agent-cli run_command setup
```

各コマンドには、そのコマンドの実行時のスタックとデプロイメントの状態を表す[スタック設定およびデプロイメント JSON](workingcookbook-json.md) が関連付けられています。このデータは次のコマンドまでの間に変更される可能性があるため、コマンドの古いインスタンスは最新のデータとは多少異なるデータを使用している場合があります。コマンドの特定のインスタンスを再実行するには、`list_commands` の出力から時刻をコピーし、次のコマンドを実行します。

```
sudo opsworks-agent-cli run_command time
```

前の例はすべて、デフォルトの JSON (そのコマンド用にインストールされた JSON) を使用してコマンドを再実行しています。次のように、任意の JSON ファイルに対してコマンドを再実行できます。

```
sudo opsworks-agent-cli run_command -f /path/to/valid/json.file
```

## Chef ログの表示
<a name="troubleshoot-debug-cli-log"></a>

エージェント CLI の [`show_log`](agent-show.md) コマンドは、指定されたログを表示します。このコマンドが完了すると、ユーザーはファイルの末尾を確認すると考えられます。そのため、`show_log` コマンドでは、一般にユーザーがエラー情報を確認する場所であるログの末尾が表示されます。スクロールアップすると、ログの前の部分を表示できます。

現在のコマンドのログを表示するには、次のコマンドを実行します。

```
sudo opsworks-agent-cli show_log
```

特定のコマンドのログを表示することもできますが、エージェントがキャッシュに入れるのは、最新 30 個のコマンドのログだけであることに注意してください。インスタンスのコマンドを一覧表示するには、キャッシュされたコマンドと各コマンドの実行時刻のリストを返す [`list_commands`](agent-list.md) を実行します。例については、[レシピの実行](#troubleshoot-debug-cli-recipes)を参照してください。

直近に実行された特定のコマンドのログを表示するには、次のコマンドを実行します。

```
sudo opsworks-agent-cli show_log command
```

command パラメータは、`setup`、`configure`、`deploy`、`undeploy`、`start`、`stop`、または `restart` に設定できます。これらのコマンドのほとんどはライフサイクルイベントに対応しており、関連付けられているレシピを実行するようエージェントに指示します。

実行された特定のコマンドのログを表示するには、`list_commands` の出力から日付をコピーし、次のコマンドを実行します。

```
sudo opsworks-agent-cli show_log date
```

コマンドがまだ実行中の場合、`show_log` はログの現在の状態を表示します。

**注記**  
`show_log` を使用してエラーやメモリ不足の問題のトラブルシューティングを行う 1 つの方法として、次のように実行中にログの末尾を表示します。  
`run_command` を使用して、適切なライフサイクルイベントをトリガーします。詳細については、「[レシピの実行](#troubleshoot-debug-cli-recipes)」を参照してください。
`show_log` を繰り返し実行して、ログの書き込み中にログの末尾を表示します。
Chef がメモリ不足になったり、予期せず終了した場合は、ログが突然終了します。レシピが失敗した場合、ログは例外とスタック トレースで終了します。

## スタック設定およびデプロイメント JSON の表示
<a name="troubleshoot-debug-cli-json"></a>

レシピで使用するデータの大半は、[スタック設定およびデプロイメント JSON](workingcookbook-json.md) から取得されます。JSON は、スタック設定、デプロイメント、およびユーザーが追加できるオプションのカスタム属性の詳細な記述である一連の Chef 属性を定義したものです。コマンドごとに、 OpsWorks Stacks はコマンド の時点でスタックとデプロイ状態を表す JSON をインストールします。詳細については、「[スタック設定およびデプロイメント属性](workingcookbook-json.md)」を参照してください。

カスタムレシピでスタック設定およびデプロイ JSON からデータを取得した場合、JSON を調べることでデータを確認できます。スタック設定およびデプロイ JSON を表示する最も簡単な方法は、JSON オブジェクトの書式設定されたバージョンを表示する、エージェント CLI の [`get_json`](agent-json.md) コマンドを実行することです。標準的な出力の最初の数行を次に示します。

```
{
  "opsworks": {
    "layers": {
      "php-app": {
        "id": "4a2a56c8-f909-4b39-81f8-556536d20648",
        "instances": {
          "php-app2": {
            "elastic_ip": null,
            "region": "us-west-2",
            "booted_at": "2013-02-26T20:41:10+00:00",
            "ip": "10.112.235.192",
            "aws_instance_id": "i-34037f06",
            "availability_zone": "us-west-2a",
            "instance_type": "c1.medium",
            "private_dns_name": "ip-10-252-0-203.us-west-2.compute.internal",
            "private_ip": "10.252.0.203",
            "created_at": "2013-02-26T20:39:39+00:00",
            "status": "online",
            "backends": 8,
            "public_dns_name": "ec2-10-112-235-192.us-west-2.compute.amazonaws.com"
...
```

最新のスタック設定およびデプロイメント JSON を表示するには、次のコマンドを実行します。

```
sudo opsworks-agent-cli get_json
```

指定したコマンドの最新のスタック設定およびデプロイメント JSON を表示するには、次のコマンドを実行します。

```
sudo opsworks-agent-cli get_json command
```

command パラメータは、`setup`、`configure`、`deploy`、`undeploy`、`start`、`stop`、または `restart` に設定できます。これらのコマンドのほとんどはライフサイクルイベントに対応しており、関連付けられているレシピを実行するようエージェントに指示します。

特定のコマンド実行のスタック設定およびデプロイメント JSON を表示するには、次のようにコマンドの日付を指定します。

```
sudo opsworks-agent-cli get_json date
```

このコマンドを使用する最も簡単な方法は次のとおりです。

1. インスタンスで実行されたコマンドと各コマンドが実行された日付のリストを返す、`list_commands` を実行します。

1. 該当するコマンドの日付をコピーし、`get_json` の *date* 引数として使用します。