セッションマネージャーのハマりどころをパターンごとに整理してみる
こんにちは、鈴木(純)です。
みなさんセッションマネージャー、使ってますか?私は結構な頻度で利用しています。
EC2へ入るのにSSHするの面倒だし、プライベートサブネットにもアクセスできるので踏み台がいらなかったりと非常に便利ですよね。
しかし、いざ設定してみるとなかなか繋がらなくてドキュメントをみてもよく分からない、意外と設定が多くてどこに原因があるのかわからないなんてこともありませんか?
今回はそんなセッションマネージャーを利用するときのハマりどころをパターンごとに整理してみました。
セッションマネージャーでEC2にアクセスする場合、大きく分けて次の3パターンで考えます。
- EC2がパブリックサブネットにある場合
- EC2がプライベートサブネットにあり、インターネットへのアウトバウンド通信経路がある場合
- EC2がプラベートサブネットにあり、インターネットへのアウトバウンド通信経路がない場合
前提条件
セッションマネージャーを利用するにあたり必要な条件は以下の通りです。
これらの条件はどのパターンの利用でも必要になるため、しっかりと確認しておきましょう。
- SSMエージェントがインストールされている
- バージョンの詳細についてはこちらを参照
- セキュリティグループ,ネットワークACLで443ポートへのアウトバウンドが制限されていない
- EC2に必要な権限が付与されている
- 少し前までは「AmazonEC2RoleforSSM」がよく使われていましたが、より最小限の権限で利用できる「AmazonSSMManagedInstanceCore」推奨
①EC2がパブリックサブネットにある場合
とってもわかりやすい構成。
パブリックサブネットにアタッチされているルートテーブルにIGWへの通信経路が存在すれば、EC2とSystems Manager間の通信が可能となります。
ハマりどころ
このパターンでセッションマネージャーが使えないときは、EC2内のエージェントが起動直後で立ち上がっていないか、適切なIAMロールが付与されてない場合が多いです。
一度、前提条件部分を見直してみましょう。
もし原因がわからない場合は10分くらい時間を置くのもおすすめ。エージェントが立ち上がっていないだけの場合があったりします。
②EC2がプライベートサブネットにあり、インターネットへのアウトバウンド通信がある場合
プライベートサブネットにEC2があり、パブリックサブネットにNATがあるパターン。
EC2で使うパッケージなどのアップデートを考慮してすでにNAT gatewayが構築されている場合は、このパターンでアクセスすることになります。
ハマりどころ
EC2からインターネットに対し、アウトバウンドの通信ができることを確認してください。
確認観点としては、プライベートサブネットに紐づくルートテーブルの設定が漏れていることがあります。
EC2が属しているプラベートサブネットのルートテーブルを確認して、ターゲットにNATが指定されているか確認しましょう。
それでも接続できない場合は、もう一度前提条件を確認してみましょう。
③EC2がプライベートサブネットにあり、インターネットへのアウトバウンド通信経路がない場合
一番ややこしいのがこのパターン。
よりセキュアな環境で利用したい場合に採用されます。
ハマりどころ
インターネットを経由しない完全に閉じた環境でセッションマネージャーを使用したい場合は、2つの観点で確認してみましょう。
VPCエンドポイントに不足がないか
最低限セッションマネージャーの通信に必要なエンドポイントを作成しましょう。
- com.amazonaws.region.ssm
- com.amazonaws.region.ec2messages
- com.amazonaws.region.ssmmessages
- com.amazonaws.region.s3
※厳密に言えば4はなくても利用できますが、SSMエージェントの更新に使用されるので作成しておきましょう。Gateway型のエンドポイントのため無料です。
VPCエンドポイントにアタッチするセキュリティグループに、インバウンド443ポートを許可しておく
よく忘れるので注意しましょう。私は何度かハマりました。
セッションマネージャーはEC2からのアウトバウンド通信で利用するため、エンドポイントのセキュリティグループに対してインバウンドの許可がないと利用できません。
セキュリティグループの許可がないとセッションマネージャーの画面は開きますが、こんな感じの真っ黒な画面で永遠と自分の顔と見つめ合うことになります。
EC2からのアウトバウンドでポート443が許可されていない場合でも同じ症状になりますので、一度セキュリティグループを確認してみてください。
最後に
セッションマネージャーのハマりどころについてパターン別に確認してみました。
なぜか接続できない…という場合のお役に立てれば幸いです!
※エンドポイント経由はセキュアな反面実は結構お金がかかります。
もしコストについて気になる場合は以下の記事がまとまっていますので、参考にしてみてください。
セッションマネージャー便利な機能なのでどんどん活用していきましょう!
参考記事
SSH不要時代がくるか!?AWS Systems Manager セッションマネージャーがリリースされました! | Developers.IO