今回のエラー内容
EC2にSSM経由で接続しようとコマンドを入力した結果エラーが発生しました。
aws ssm start-session --target {インスタンス-ID} --profile {プロファイル名}
An error occurred (TargetNotConnected) when calling the StartSession operation: {インスタンス-ID} is not connected.
結論
VPCエンドポイントのインバウンドルールにHTTPSがなかったことが原因でした。
調査の過程
EC2にEC2 Instance Connectを使用して接続して、SSM Clientのログを確認
上記注意点として、EC2にいったんSSH接続可能なインバウンドルールを適用する必要があります。
SSH接続ができたら、sudo ls /var/log/amazon/ssm
でファイルを確認して、sudo tail /var/log/amazon/ssm/errors.log
でログを確認します。
caused by: Post {URL}: dial tcp {IPアドレス}:443: i/o timeout
そしたら、上記エラーログを確認できました。
知らないIPのHTTPSポートにPOSTしようとしてtimeoutになっていることは理解できたのですが、どこに投げているのかのさっぱりわかりませんでした。
とりあえずログと状況でググる
ググると下記URLがヒットしたので、見てみると、3番目の状況が似ていると思い、VPCのネットワークACLとEC2のセキュリティールールを確認しました。しかし、両方とも適切に設定されていました。
さらにググる
すると下記URLがヒットしました。見てみると、VPCエンドポイントを通り、Session Managerとのやり取りをするみたいです。ならばと思い、VPCエンドポイントのインバウンドルールを見てみるとHTTPSのルールがありませんでした。
まとめ
VPCエンドポイントやAWS System Manager Session Managerについての理解がまだ浅いと感じました。まだまだ、凡事徹底やな。