Systems Manager コンソールの [マネージドインスタンス] に EC2 インスタンスが表示されないのはなぜですか?
最終更新日: 2022 年 11 月 7 日
Amazon Elastic Compute Cloud (Amazon EC2) インスタンスが、AWS Systems Manager コンソールでマネージドインスタンスの下に表示されません。
簡単な説明
マネージドインスタンスは、Systems Manager で使用するために設定された Amazon EC2 インスタンスです。マネージドインスタンスでは、Run Command、Patch Manager、Session Manager などの、Systems Manager サービスを使用できます。
インスタンスをマネージドインスタンスにするには、次の前提条件を満たす必要があります。
- AWS Systems Manager エージェント(SSM エージェント)がインストールされ実行中である。
- SSM エージェントを使用して Systems Manager エンドポイントに接続されている。
- 適切な AWS Identity and Access Management (IAM) ロールがアタッチされている。
- インスタンスメタデータサービスに接続している。
注: SSM エージェント バージョン 3.1.501.0 以降では、ssm-cli を使用してインスタンスがこれらの要件を満たしているかどうかを判断できます。ssm-cli は SSM Agentエージェント のインストールに含まれるスタンドアロンのコマンドラインツールで、設定済みのコマンドが含まれています。コマンドは必要な情報を収集し、実行中であることを確認した Amazon EC2 インスタンスが Systems Manager のマネージドインスタンスのリストに含まれていない理由を診断するのに役立ちます。
また、AWSSupport-TroubleshootManagedInstance Systems Manager オートメーションドキュメントを実行して、インスタンスがマネージドインスタンスとしてリストされる前提条件を満たしているかどうかを確認することもできます。詳細については、「AWSSupport-TroubleshootManagedInstance」を参照してください。
注意: ハイブリッドインスタンスの場合は、「AWS Systems Manager でのハイブリッド環境のセットアップ」を参照してください。
解決方法
注意: ここでの解決策を実行する前に、必ず対象のインスタンスがあるリージョンを選択してください。
インスタンスが、以下の前提条件を満たしていることを確認します。
当該インスタンスにおいて SSM エージェントがインストールおよび実行されている
オペレーティングシステムが Systems Manager のサポート対象であることを確認します。サポート対象であるオペレーティングシステムの一覧は、「Supported operating systems(サポートされるオペレーティングシステム)」で確認してください。
SSM エージェントは、一部の Windows および Linux の Amazon マシンイメージ (AMI) にプリインストールされています。SSM エージェントがプリインストールされている AMI のリストについては、以下を参照してください。
Linux: EC2 インスタンスでの SSM エージェントのインストールと設定 (Linux 用)
Windows: EC2 インスタンスでの SSM エージェントのインストールと設定 (Windows Server 用)
SSM エージェントがプリインストールされていない場合は、エージェントを手動でインストールする必要があります。
Linux: Linux 用の EC2 インスタンスに SSM エージェントを手動でインストールする
Windows:Windows Server 用の EC2 インスタンスに SSM エージェントを手動でインストールする
SSM エージェントの状態確認は、以下のコマンドにより行います。
Amazon Linux の場合、RHEL 6 (または同様のディストリビューション):
$ sudo status amazon-ssm-agent
Amazon Linux 2、Ubuntu、RHEL 7 (または同種のディストリビューション):
$ sudo systemctl status amazon-ssm-agent
Ubuntu 18.04 またはそれ以降のスナップを使用するシステムの場合:
$ sudo snap services amazon-ssm-agent
Windows の場合:
$ Get-Service AmazonSSMAgent
ポート 443 で Systems Manager エンドポイントへの接続を確認する
接続を確認する最適な方法は、オペレーティングシステムによって異なります。
重要: 以下のコマンド例で、RegionID を使用している AWS リージョン ID に置き換えます。
リージョンごとの Systems Manager エンドポイントの一覧は、AWS Systems Manager エンドポイントとクォータで確認してください。
注: 以下の例では、ssmmessages エンドポイントは、AWS Systems Manager Session Manager にのみ必要です。
EC2 Linux インスタンスの場合: telnet または netcat コマンドを使用して、ポート 443 のエンドポイントへの接続を確認できます。
Telnet
telnet ssm.RegionID.amazonaws.com 443
telnet ec2messages.RegionID.amazonaws.com 443
telnet ssmmessages.RegionID.amazonaws.com 443
成功した接続の例:
root@111800186:~# telnet ssm.us-east-1.amazonaws.com 443
Trying 52.46.141.158...
Connected to ssm.us-east-1.amazonaws.com.
Escape character is '^]'.
Telnet を終了するには、Ctrl キーを押しながら、] キーを押します。quit と入力し、Enter キーを押します。
Netcat
nc -vz ssm.RegionID.amazonaws.com 443
nc -vz ec2messages.RegionID.amazonaws.com 443
nc -vz ssmmessages.RegionID.amazonaws.com 443
注: Netcat は Amazon EC2 インスタンスにはプリインストールされません。Netcat を手動でインストールするには、Nmap のウェブサイトで Ncat を参照してください。
EC2 Windows インスタンスの場合: ポート 443 のエンドポイントへの接続を確認するには、次の Windows PowerShell コマンドを使用します。
Test-NetConnection ssm.RegionID.amazonaws.com -port 443
Test-NetConnection ec2messages.RegionID.amazonaws.com -port 443
Test-NetConnection ssmmessages.RegionID.amazonaws.com -port 443
パブリックサブネットの場合: Systems Manager エンドポイントはパブリックエンドポイントです。つまり、インスタンスはインターネットゲートウェイを使用してインターネットに接続できる必要があります。パブリックサブネットのインスタンスからエンドポイントへの接続に関する問題については、以下を確認してください。
- インスタンスが使用するルートテーブルに、インターネットへのルートが含まれている必要があります。
- Virtual Private Cloud (VPC) セキュリティグループとネットワークアクセスコントロールリスト (ネットワーク ACL) を、ポート 443 でアウトバウンド接続を許可するように設定する必要があります。
プライベートサブネットの場合: プライベートサブネットの場合、インスタンスは NAT ゲートウェイを使用してインターネットに到達できる必要があります。あるいは、インスタンスがプライベートサブネットにある場合、Systems Manager エンドポイントに到達するように VPC エンドポイントを設定することができます。これにより、プライベート IP アドレスを使用して Amazon EC2 および Systems Manager API にプライベートにアクセスすることが可能になります。詳細については、Systems Manager を使用してインターネットアクセスなしでプライベート EC2 インスタンスを管理できるように、VPC エンドポイントを作成するにはどうすればよいですか? をご覧ください。
注: インターフェイスエンドポイントは、指定されたサブネットにそれぞれ Elastic Network Interface を作成します。
プライベートサブネットのセキュリティベストプラクティスとして、以下のルールが適用されていることを確認してください。
- VPC エンドポイントが使用するネットワークインターフェイスにアタッチされたセキュリティグループが、インスタンスにアタッチされたセキュリティグループからのインバウンドポート 443 を許可する。
- インスタンスにアタッチされたセキュリティグループが、VPC エンドポイントが使用するネットワークインターフェイスのプライベート IP アドレスへのポート 443 アウトバウンドを許可する。
適切な IAM ロールがインスタンスにアタッチされていることを確認する
Systems Manager エンドポイントへの API コールを行うには、AmazonssmmanagedInstanceCore アクセス許可ポリシーを、インスタンスにアタッチされた IAM ロールに追加します。カスタム IAM ポリシーを使用している場合は、そのポリシーにおいて、AmazonSSMManagedInstanceCore が提供するアクセス許可が使用されていることを確認します。 また、IAM ロールの信頼ポリシーが、このロールを引き受けることを ec2.amazonaws.com に許可していることを確認します。
詳細については、「Add permissions to a Systems Manager instance profile (console)」を参照してください。
インスタンスメタデータサービスへの接続を確認する
インスタンスに関する必要な情報を取得するために、SSM エージェントはインスタンスメタデータサービスと通信する必要があります。Netcat コマンドを使用して、接続をテストします。
nc -vz 169.254.169.254 80
インスタンスでプロキシを使用していると、そのプロキシによってメタデータ URL への接続がブロックされる場合があります。SSM エージェントが、プロキシを使用するように設定されていることを確認します。プロキシを使用するように SSM エージェントを設定するには、以下を参照してください。
Windows の場合:Windows Server インスタンスのプロキシを使用するように SSM エージェントを設定する
Linux の場合: プロキシを使用するように SSM エージェントを設定する (Linux)
トラブルシューティング
それでもインスタンスが Systems Manager コンソールにマネージドインスタンスとして表示されない場合は、SSM エージェントのログを参照して、さらにトラブルシューティングを行います。
Windows の場合: Windows 用 SSM エージェントのログは、%PROGRAMDATA%\Amazon\SSM\Logs にあります。
Linux の場合: Linux 用 SSM エージェントのログは、/var/log/amazon/ssm にあります。