Session Manager のトラブルシューティング - AWS Systems Manager

Session Manager のトラブルシューティング

以下の情報を参考にして、AWS Systems Manager Session Manager に関する問題のトラブルシューティングを行います。

ドキュメントプロセスが予期せず失敗しました: ドキュメントワーカーがタイムアウトしました

問題: Linux ホストへのセッションを開始すると、Systems Manager が次のエラーを返します。

document process failed unexpectedly: document worker timed out, check [ssm-document-worker]/[ssm-session-worker] log for crash reason

SSM Agent ログの表示」で説明されているように SSM Agent ログ記録を設定している場合、デバッグログで詳細を確認できます。この問題では、Session Manager に次のログエントリが表示されます。

failed to create channel: too many open files

通常、このエラーは、実行中の Session Manager ワーカープロセスが多すぎて、基盤となるオペレーティングシステムが制限に達したことを示します。この問題を解決するには、2 つのオプションがあります。

解決策 A: オペレーティングシステムファイルの通知制限を増やす

制限は、別の Linux ホストから次のコマンドを実行することによって増やすことができます。このコマンドは Systems Manager Run Command を使用します。指定した値によって max_user_instances が 8192 に増加します。この値はデフォルト値の 128 よりも大幅に高くなりますが、ホストリソースに負荷がかかることはありません。

aws ssm send-command --document-name AWS-RunShellScript \ --instance-id i-02573cafcfEXAMPLE --parameters \ "commands=sudo sysctl fs.inotify.max_user_instances=8192"

解決策 B: ターゲットホストで Session Manager が使用するファイル通知を減らす

別の Linux ホストから次のコマンドを実行して、ターゲットホストで実行しているセッションを一覧表示します。

aws ssm describe-sessions --state Active --filters key=Target,value=i-02573cafcfEXAMPLE

コマンド出力を確認して、不要になったセッションを特定します。これらのセッションは、別の Linux ホストから次のコマンドを実行することによって終了できます。

aws ssm terminate-session —session-id session ID

リモートサーバーで実行しているセッションがなくなったら、別の Linux ホストから次のコマンドを実行して追加のリソースを解放できます (オプション)。このコマンドは、リモートホストで実行しているすべての Session Manager プロセスを終了するので、その結果、リモートホストへのすべてのセッションが終了します。このコマンドを実行する前に、保持すべき進行中のセッションがないことを確認してください。

aws ssm send-command --document-name AWS-RunShellScript \ --instance-id i-02573cafcfEXAMPLE --parameters \ '{"commands":["sudo kill $(ps aux | grep ssm-session-worker | grep -v grep | awk '"'"'{print $2}'"'"')"]}'

Session Manager が Amazon EC2 コンソールから接続できない

問題: 新しいインスタンスを作成した後、Amazon Elastic Compute Cloud (Amazon EC2) コンソールの [セッションマネージャー] タブで、接続するオプションが表示されません。

解決策 A: インスタンスプロファイルを作成する: (EC2 コンソールの [セッションマネージャー] タブの情報の指示に従って) まだ作成していない場合は、Quick Setup を使用して AWS Identity and Access Management (IAM) インスタンスプロファイルを作成します。Quick Setup は AWS Systems Manager の機能です。

Session Manager がインスタンスに接続するには IAM インスタンスプロファイルが必要です。Quick Setup を使用して ホスト管理設定を作成することで、インスタンスプロファイルを作成してインスタンスに割り当てることができます。ホスト管理設定により、必要なアクセス権限を持つインスタンスプロファイルが作成され、インスタンスに割り当てられます。ホスト管理設定では、他の Systems Manager 機能も有効にし、それらの機能を実行するための IAM ロールを作成します。Quick Setup またはホスト管理設定によって有効になっている機能の使用料は発生しません。Quick Setup を開きホスト管理設定を開いて作成します

重要

ホスト管理設定を作成した後、Amazon EC2 が変更を登録し、[セッションマネージャ] タブを更新するまでに数分かかる場合があります。2 分経ってもタブに [接続] ボタンが表示されない場合は、インスタンスを再起動します。再起動しても接続するオプションが表示されない場合は、[Quick Setup] を開き、ホスト管理設定が 1 つだけであることを確認します。2 つある場合は、古いほうの設定を削除して数分待ってください。

ホスト管理設定を作成した後も接続できない場合、または SSM Agent に関するエラーなどのエラーが表示される場合は、次のいずれかの解決策を参照してください。

解決策 B: エラーは発生しないが、依然として接続できない

ホスト管理設定を作成し、数分間待ってから接続を試行しても、依然として接続できない場合は、ホスト管理設定をインスタンスに手動で適用する必要がある場合があります。次の手順を使用して、Quick Setup ホスト管理設定を更新し、変更をインスタンスに適用します。

Quick Setup を使用してホスト管理設定を更新するには
  1. AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/) を開きます。

  2. ナビゲーションペインで、[Quick Setup] を選択します。

  3. [設定] リストで、作成した [ホスト管理] 設定を選択します。

  4. [アクション][設定を編集] の順に選択します。

  5. [ターゲット] セクションのほぼ最下部にある [インスタンスをどのようにターゲットにするかを選択] で、[手動] を選択します。

  6. [インスタンス] セクションで、作成したインスタンスを選択します。

  7. [Update] (更新) を選択します。

EC2 が [セッションマネージャー] タブを更新するまで数分待ちます。それでも接続できない場合、またはエラーが表示される場合は、この問題の他の解決策を確認してください。

解決策 C: SSM Agent が見つからないことに関するエラー

Quick Setup を使用してホスト管理設定を作成できなかった場合、または SSM Agent がインストールされていないことに関するエラーが表示される場合は、インスタンスに SSM Agent を手動でインストールする必要がある場合があります。SSM Agent は、Systems Manager が Session Manager を使用してインスタンスに接続できるようにする Amazon のソフトウェアです。SSM Agent は、ほとんどの Amazon マシンイメージ (AMI) にデフォルトでインストールされます。インスタンスが非標準 AMI または古い AMI で作成された場合は、エージェントを手動でインストールしなければならない場合があります。SSM Agent のインストールの手順については、ご使用のインスタンスのオペレーティングシステムに対応する次のトピックを参照してください。

SSM Agent に関する問題については、SSM Agent のトラブルシューティング を参照してください。

セッションを開始するアクセス許可がありません

問題: セッションを開始しようとしましたが、システムから必要なアクセス権限がないと通知されました。

SSM Agent がオンラインになっていません

問題: Amazon EC2 インスタンスの [Session Manager] タブに、SSM Agent がオンラインになっていないというメッセージが表示されます。SSM Agent は、Systems Manager エンドポイントに接続して、それ自体をサービスに登録することができませんでした。

解決策: SSM Agent は、Session Manager が Amazon EC2 インスタンスに接続できるように、これらのインスタンス上で実行される Amazon ソフトウェアです。このエラーが表示される場合、SSM Agent は Systems Manager エンドポイントとの接続を確立できません。問題の原因には、ファイアウォール制限、ルーティング問題、またはインターネット接続がないことが考えられます。この問題を解決するには、ネットワーク接続問題を調査してください。

セッション設定を変更するためのアクセス許可がありません

問題: 組織のグローバルなセッション設定を更新しようとしましたが、システムから必要なアクセス権限がないと通知されました。

Session Manager が使用できない、または使用に設定されていないマネージドノード。

問題 1: セッションの開始のコンソールページでセッションを開始したくても、あるマネージドノードがリストにありません。

  • 解決策 A: 接続したいマネージドノードが AWS Systems Manager 用に設定されていない可能性があります。詳細については、「組織用の Systems Manager 統合コンソールのセットアップ」を参照してください。

    注記

    IAM インスタンスプロファイルをアタッチする際に AWS Systems ManagerSSM Agent がマネージドノード上ですでに実行されている場合、セッションの開始コンソールページにインスタンスが表示される前に、エージェントを再起動しなければならない場合があります。

  • 解決策 B: マネージドノードの SSM Agent に適用したプロキシ設定が正しくない可能性があります。プロキシ設定が正しくない場合、マネージドノードは必要なサービスエンドポイントに到達できないか、またはノードがに異なるオペレーティングシステムとして Systems Manager にレポートする可能性があります。詳細については、Linux ノードでプロキシを使用するための SSM Agent の設定およびSSM Agent が Windows Server インスタンス用にプロキシを使用するように設定するを参照してください。

問題 2: 接続したいマネージドノードがセッションの開始コンソールページのリストにありますが、「選択したインスタンスは Session Manager を使用するように構成されていません」というページが表示されます。

Session Manager プラグインが見つからない

AWS CLI を使用してセッションコマンドを実行するには、ローカルマシンにも Session Manager プラグインがインストールされている必要があります。詳細については、AWS CLI 用の Session Manager プラグインをインストールする を参照してください。

Session Manager プラグインがコマンドラインパスに自動的に追加されませんでした (Windows)

Session Manager プラグインを Windows にインストールする場合、オペレーティングシステムの PATH 環境変数に session-manager-plugin 実行可能なファイルが自動的に追加されます。Session Manager プラグインが正しくインストールされているか (aws ssm start-session --target instance-id) 確認して、コマンド実行後に失敗した場合は、次の手順を使用して手動で設定する必要があります。

PATH 変数を変更するには (Windows)
  1. Windows キーを押し、「environment variables」と入力します。

  2. [Edit environment variables for your account] を選択します。

  3. [PATH] を選択して、[Edit] を選択します。

  4. 次の例に示すように、セミコロンで区切って [Variable value (変数値)] フィールドにパスを追加します: C:\existing\path;C:\new\path

    次の例に示すように、C:\existing\path は既にフィールドにある値を表します。C:\new\path は追加するパスを表します。

    • 64 ビットコンピュータ: C:\Program Files\Amazon\SessionManagerPlugin\bin\

    • 32 ビットコンピュータ: C:\Program Files (x86)\Amazon\SessionManagerPlugin\bin\

  5. [OK] を 2 回選択して、新しい設定を適用します。

  6. 実行中のコマンドプロンプトを閉じ、もう一度開きます。

Session Manager プラグインが応答しなくなる

ローカルマシンにウイルス対策ソフトウェアがインストールされている場合、ポート転送セッション中にトラフィックの転送が停止することがあります。場合によっては、ウイルス対策ソフトウェアが Session Manager プラグインがプロセスのデッドロックを引き起こします。この問題を解決するには、ウィルス対策ソフトウェアから Session Manager プラグインを許可するか除外します。Session Manager プラグインのデフォルトのインストールパスの詳細については、「AWS CLI 用の Session Manager プラグインをインストールする」を参照してください。

TargetNotConnected

問題: セッションを開始しようとしましたが、システムは「StartSession オペレーションの呼び出し時にエラー (TargetNotConnected) が発生しました。InstanceID が接続されていません」というエラーメッセージを返します。

  • 解決策 A: このエラーは、セッションに指定されたターゲットのマネージドノードが Session Manager で使用するように完全に設定されていない場合に返されます。詳細については、Session Manager を設定する を参照してください。

  • 解決策 B: このエラーは、別の AWS アカウント または AWS リージョン にあるマネージドノードでセッションを開始しようとした場合も返されます。

セッション開始後に空白の画面が表示される

問題: セッションを開始すると、Session Manager に空白の画面が表示される。

  • 解決策 A: この問題は、マネージドノードのルートボリュームがいっぱいになったときに発生する可能性があります。ディスク容量不足のため、ノードの SSM Agent が動作を停止します。この問題を解決するには、Amazon CloudWatch を使用して、オペレーティングシステムからメトリクスとログを収集します。詳細については、「Amazon CloudWatch ユーザーガイド」の「CloudWatch エージェントを使用してメトリクス、ログ、トレースを収集する」を参照してください。

  • 解決策 B: エンドポイントとリージョンのペアが一致しないリンクを使用してコンソールにアクセスした場合、空白の画面が表示されることがあります。例えば、次のコンソール URL では、us-west-2 は指定されたエンドポイントですが、us-west-1 は指定された AWS リージョン です。

    https://us-west-2.console.aws.amazon.com/systems-manager/session-manager/sessions?region=us-west-1
  • 解決策 C: VPC エンドポイントを使用してマネージドノードが Systems Manager に接続し、Session Manager の設定に基づいてセッション出力が Amazon S3 バケットまたは Amazon CloudWatch Logs のロググループに書き込みますが、s3 ゲートウェイ・エンドポイントまたは logs インターフェイス・エンドポイントは VPC に存在しません。マネージドノードが VPC エンドポイントを使用して Systems Manager に接続し、Session Manager の設定に基づいてセッション出力が Amazon S3 バケット に書き込まれる場合、com.amazonaws.region.s3 形式の s3 エンドポイントが必要です。マネージドノードが VPC エンドポイントを使用して Systems Manager に接続し、Session Manager の設定に基づいてセッション出力が CloudWatch Logs のロググループに書き込まれる場合、com.amazonaws.region.logs 形式の logs エンドポイントが必要です。詳細については、「Systems Manager 用の VPC エンドポイントを作成する」を参照してください。

  • 解決策 D: セッション設定で指定したロググループまたは Amazon S3 バケットが削除されました。この問題を解決するには、有効なロググループまたは S3 バケットを使用してセッション設定を更新します。

  • 解決策 E: セッション設定で指定したロググループまたは Amazon S3 バケットは暗号化されませんが、 cloudWatchEncryptionEnabled または s3EncryptionEnabled の入力を true に設定しています。この問題を解決するには、暗号化されたロググループまたは Amazon S3 バケットを使用してセッション設定を更新するか、cloudWatchEncryptionEnabled または s3EncryptionEnabled 入力を false に設定します。このシナリオは、コマンドラインツールを使用してセッション設定を作成する顧客にのみ適用されます。

長時間実行しているセッション中にマネージドノードが応答しなくなる

問題: 長時間実行しているセッション中にマネージドノードが応答しなくなるか、またはクラッシュします。

解決策: Session Manager の SSM Agent ログ保持期間を減らします。

セッションの SSM Agent ログの保持期間を短縮するには
  1. Linux 向けの /etc/amazon/ssm/ ディレクトリ、または Windows 向けの C:\Program Files\Amazon\SSM 内で amazon-ssm-agent.json.template を検索します。

  2. amazon-ssm-agent.json.template の内容を、amazon-ssm-agent.json という名前の同じディレクトリ内の新しいファイルにコピーします。

  3. SessionLogsRetentionDurationHours プロパティの SSM 値のデフォルト値を小さくして、ファイルを保存します。

  4. [SSM Agent] を再起動する

StartSession オペレーションを呼び出すときにエラーが発生しました (InvalidDocument)

問題: AWS CLI を使用してセッションを開始すると、次のエラーが表示される。

An error occurred (InvalidDocument) when calling the StartSession operation: Document type: 'Command' is not supported. Only type: 'Session' is supported for Session Manager.

解決策: --document-name パラメータに指定した SSM ドキュメントがセッションドキュメントではありません。次の手順を使用して、AWS Management Console のセッションドキュメントのリストを表示します。

セッションドキュメントのリストを表示するには
  1. AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/) を開きます。

  2. ナビゲーションペインで、[ドキュメント] を選択します。

  3. [カテゴリ] リストで [セッションドキュメント] を選択します。