みなさん、こんにちは!
AWSの検証で、プライベートサブネットにEC2を作成してセッションマネージャーで接続することがよくあります。
長期間使用しない時は一度EC2やVPCエンドポイントを削除して必要な時に再度作成しているのですが、いつもの手順で作成・接続しようとしたところ、接続はできるもののプロンプトが表示されず、画面が真っ暗なままになる現象に遭遇しました。
(ちなみにそのEC2はWindowsインスタンスで、フリートマネージャーでの接続は通常通り可能でした。)
このような事態に直面したのは初めてで解決までに時間がかかったため、備忘録として残しておきます。
前提
プライベートサブネットにあるEC2にセッションマネージャーで接続する手順については、AWS公式ガイド等をご確認ください。
下記のAWS re:Postにも一連の流れや確認点が載っているページがありましたので共有します。
※参照:Amazon VPC エンドポイントを作成することで、インターネットへのアクセスを必要とせずに、Systems Manager を使用してプライベート Amazon EC2 インスタンスを管理できるようにする方法を教えてください。
原因
セッションマネージャーの設定で(CloudWatch LogsまたはS3への)ロギングが有効化されていたにも関わらず、ロギング用のVPCエンドポイントが作成されていなかったことが原因でした。
普段はロギングせずに接続しているのでロギング用のVPCエンドポイントの作成を省略していたのですが、今回何らかの理由でロギングが有効化され、その結果プロンプトが返らないという状況になっていたようです。
解決方法
①S3およびCloudWatch Logsへのロギングを無効化する
ログ保管が不要であれば、セッションマネージャーの設定ページでロギングを無効化すれば接続できるようになります。
セッションマネージャーの接続画面で「設定」を押下し、画面右上の「編集」からS3とCloudWatch Logsへのロギングを無効化してください。
②ロギングしたいAWSサービス用のVPCエンドポイントを作成する
プライベートEC2にセッションマネージャーで接続した時のログ保管が必要な場合は、下記のいずれかのVPCエンドポイントを作成する必要があります。
- com.amazonaws.[AWSリージョン].s3
- com.amazonaws.[AWSリージョン].logs
セッションマネージャーの設定ページでS3またはCloudWatch Logsへのロギング有効化とログ出力先を設定して、ログを保管したい方のVPCエンドポイントを作成してください。
まとめ
今回のようなケースは発生頻度が少ないかもしれませんが、同様のトラブルに直面した方の一助となれば幸いです。
最後までお付き合いいただきありがとうございました!