Session Manager のトラブルシューティング
以下の情報を参考にして、AWS Systems Manager Session Manager に関する問題のトラブルシューティングを行います。
トピック
TerminateSession オペレーションを呼び出すときの AccessDeniedException
問題: セッションを終了しようとすると、Systems Manager が次のエラーを返します。
An error occurred (AccessDeniedException) when calling the TerminateSession operation: User: <user_arn> is not authorized to perform: ssm:TerminateSession on resource: <ssm_session_arn> because no identity-based policy allows the ssm:TerminateSession action.
ソリューション A: 最新バージョンの Session Manager プラグインがノードにインストールされていることを確認します。
ターミナルに以下のコマンドを入力して、Enter キーを押します。
session-manager-plugin --version
ソリューション B: プラグインの最新バージョンをインストールまたは再インストールします。
詳細については、「AWS CLI 用の Session Manager プラグインをインストールする」を参照してください。
ソリューション C: ノードへの接続の再確立を試みます。
ノードがリクエストに応答していることを確認します。セッションを再確立してみてください。または、必要に応じて Amazon EC2 コンソールを開き、インスタンスのステータスが実行中であることを確認します。
ドキュメントプロセスが予期せず失敗しました: ドキュメントワーカーがタイムアウトしました
問題: 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-idi-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-idsession ID
リモートサーバーで実行しているセッションがなくなったら、別の Linux ホストから次のコマンドを実行して追加のリソースを解放できます (オプション)。このコマンドは、リモートホストで実行しているすべての Session Manager プロセスを終了するので、その結果、リモートホストへのすべてのセッションが終了します。このコマンドを実行する前に、保持すべき進行中のセッションがないことを確認してください。
aws ssm send-command --document-name AWS-RunShellScript \ --instance-idi-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]
ホスト管理設定を作成した後も接続できない場合、または SSM Agent に関するエラーなどのエラーが表示される場合は、次のいずれかの解決策を参照してください。
解決策 B: エラーは発生しないが、依然として接続できない
ホスト管理設定を作成し、数分間待ってから接続を試行しても、依然として接続できない場合は、ホスト管理設定をインスタンスに手動で適用する必要がある場合があります。次の手順を使用して、Quick Setup ホスト管理設定を更新し、変更をインスタンスに適用します。
Quick Setup を使用してホスト管理設定を更新するには
AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/
) を開きます。 ナビゲーションペインで、[Quick Setup] を選択します。
-
[設定] リストで、作成した [ホスト管理] 設定を選択します。
-
[アクション]、[設定を編集] の順に選択します。
-
[ターゲット] セクションのほぼ最下部にある [インスタンスをどのようにターゲットにするかを選択] で、[手動] を選択します。
-
[インスタンス] セクションで、作成したインスタンスを選択します。
-
[更新] を選択します。
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 のトラブルシューティング を参照してください。
セッションを開始するアクセス許可がありません
問題: セッションを開始しようとしましたが、システムから必要なアクセス権限がないと通知されました。
-
解決策: システム管理者から、Session Manager セッションを開始するための AWS Identity and Access Management (IAM) ポリシーのアクセス許可が与えられていません。詳細については、「インスタンスへのユーザーセッションアクセスの制御」を参照してください。
SSM Agent がオンラインになっていません
問題: Amazon EC2 インスタンスの [Session Manager] タブに、次のメッセージが表示されます。「SSM Agent がオンラインになっていません。SSM Agent は、Systems Manager エンドポイントに接続して、それ自体をサービスに登録することができませんでした。」
解決策: SSM Agent は、Session Manager が Amazon EC2 インスタンスに接続できるように、これらのインスタンス上で実行される Amazon ソフトウェアです。このエラーが表示される場合、SSM Agent は Systems Manager エンドポイントとの接続を確立できません。可能性のある問題の原因としては、ファイアウォール制限、ルーティング問題、またはインターネット接続がないことが考えられます。この問題を解決するには、ネットワーク接続問題を調査してください。詳細については、「SSM Agent のトラブルシューティング」および「マネージドノードの可用性のトラブルシューティング」を参照してください。Systems Manager エンドポイントについては、AWS 全般リファレンスの「AWS Systems Manager エンドポイントとクォータ」を参照してください。
セッション設定を変更するためのアクセス許可がありません
問題: 組織のグローバルなセッション設定を更新しようとしましたが、システムから必要なアクセス権限がないと通知されました。
-
解決策: システム管理者から、Session Manager を設定するための IAM ポリシーのアクセス許可が与えられていません。詳細については、「Session 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 を使用するように構成されていません」というページが表示されます。
-
解決策 A: マネージドノードは Systems Manager サービスで使用されるように設定されていますが、ノードに添付された IAM インスタンスプロファイルに Session Manager ツールの許可が含まれていない可能性があります。詳細については、「Session Manager アクセス権限を使用し、IAM インスタンスプロファイルロールを確認するか作成する」を参照してください。
-
解決策 B: マネージドノードは、Session Manager をサポートする SSM Agent のバージョンを実行していません。ノードの SSM Agent をバージョン 2.3.68.0 以降に更新します。
オペレーティングシステムに応じて Windows Server 用の EC2 インスタンスに SSM Agent を手動でインストールおよびアンインストールする、Linux 用 EC2 インスタンスに SSM Agent を手動でインストールおよびアンインストールする、macOS 用の EC2 インスタンスに SSM Agent を手動でインストールおよびアンインストールする の手順にしたがって、マネージドノードの SSM Agent を手動で更新します。
または、Run Command ドキュメントの
AWS-UpdateSSMAgentを使用して、1 つ以上のマネージドノードのエージェントバージョンを一度に更新します。詳細については、「Run Command を使用して SSM Agent を更新する」を参照してください。ヒント
エージェントを常に最新の状態に保つには、次のいずれかの方法で定義した自動スケジュールを使用して、SSM Agent を最新バージョンにアップデートすることをお勧めします。
-
State Manager 関連付けの一部として
AWS-UpdateSSMAgentを実行します。詳細については、「チュートリアル: AWS CLI で SSM Agent を自動的に更新する」を参照してください。 -
メンテナンスウィンドウの一部として
AWS-UpdateSSMAgentを実行します。メンテナンスウィンドウの使用については、「コンソールを使用してメンテナンスウィンドウを作成および管理する」と「チュートリアル: AWS CLI を使用してメンテナンスウィンドウを作成および設定する」を参照してください。
-
-
解決方法 C: マネージドノードは必要なサービスエンドポイントに到達できません。AWS PrivateLink によるインターフェイス・エンドポイントを使用して Systems Manager エンドポイントに接続することにより、マネージドノードのセキュリティ体制を改善できます。インターフェイス・エンドポイントを使用する代わりに、マネージドノードでアウトバウンド・インターネットアクセスを有効にする方法があります。詳細については、「PrivateLink を使用して Session Manager の VPC エンドポイントをセットアップする」を参照してください。
-
解決策 D: マネージドノードの使用可能な CPU またはメモリリソースが制限されています。マネージドノードが機能していても、ノードに十分な使用可能なリソースがなければセッションを確立できません。詳細については、「接続できないインスタンスのトラブルシューティング」を参照してください。
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)
-
Windows キーを押し、「
environment variables」と入力します。 -
[Edit environment variables for your account] を選択します。
-
[PATH] を選択して、[Edit] を選択します。
-
次の例に示すように、セミコロンで区切って [Variable value (変数値)] フィールドにパスを追加します:
;C:\existing\pathC:\new\pathは既にフィールドにある値を表します。以下の例に示すように、C:\existing\pathは追加するパスを表します。C:\new\path-
64 ビットコンピュータ:
C:\Program Files\Amazon\SessionManagerPlugin\bin\
-
-
[OK] を 2 回選択して、新しい設定を適用します。
-
実行中のコマンドプロンプトを閉じ、もう一度開きます。
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.s3s3エンドポイントが必要です。マネージドノードが VPC エンドポイントを使用して Systems Manager に接続し、Session Manager の設定に基づいてセッション出力が CloudWatch Logs のロググループに書き込まれる場合、com.amazonaws.形式のregion.logslogsエンドポイントが必要です。詳細については、「Systems Manager 用の VPC エンドポイントを作成する」を参照してください。 -
解決策 D: セッション設定で指定したロググループまたは Amazon S3 バケットが削除されました。この問題を解決するには、有効なロググループまたは S3 バケットを使用してセッション設定を更新します。
-
解決策 E: セッション設定で指定したロググループまたは Amazon S3 バケットは暗号化されませんが、
cloudWatchEncryptionEnabledまたはs3EncryptionEnabledの入力をtrueに設定しています。この問題を解決するには、暗号化されたロググループまたは Amazon S3 バケットを使用してセッション設定を更新するか、cloudWatchEncryptionEnabledまたはs3EncryptionEnabled入力をfalseに設定します。このシナリオは、コマンドラインツールを使用してセッション設定を作成する顧客にのみ適用されます。
長時間実行しているセッション中にマネージドノードが応答しなくなる
問題: 長時間実行しているセッション中にマネージドノードが応答しなくなるか、またはクラッシュします。
解決策: Session Manager の SSM Agent ログ保持期間を減らします。
セッションの SSM Agent ログの保持期間を短縮するには
-
Linux 向けの
/etc/amazon/ssm/ディレクトリ、または Windows 向けのC:\Program Files\Amazon\SSM内でamazon-ssm-agent.json.templateを検索します。 -
amazon-ssm-agent.json.templateの内容を、amazon-ssm-agent.jsonという名前の同じディレクトリ内の新しいファイルにコピーします。 -
SessionLogsRetentionDurationHoursプロパティのSSM値のデフォルト値を小さくして、ファイルを保存します。 -
[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 のセッションドキュメントのリストを表示します。
セッションドキュメントのリストを表示するには
AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/
) を開きます。 -
ナビゲーションペインで、[ドキュメント] を選択します。
-
[カテゴリ] リストで [セッションドキュメント] を選択します。