プライベートなVPC内のEC2にSession Managerで接続する
Internet GatewayすらアタッチされていないVPCにSession Managerで接続するにはVPCエンドポイントを設定すればいいんだろうなとは思っていたが実際にはやったことないので試してみた。
セットアップは公式に書いてある通り大体やればいいのだけど、それでできなくてちょっとハマった。 docs.aws.amazon.com
というのも、この通りやっても何故かSession Managerで接続できず探していたら下記のQ&Aを見つけた。
手順5のVPCエンドポイントを作成する手順のこの一文。
[Enable Private DNS Name] で [Enable for this endpoint] を選択します。
これだ!!
これを設定するにはVPCの「DNS 解決」と「DNS ホスト名」の両方が有効になってないと、VPCエンドポイントの「プライベート DNS 名を有効にする」を有効にできないので、そのように設定したらSession Managerで接続することが出来るようになった。
一応、terraformでも書いてみた。
GitHub - masaru-tech/ssm-private-ec2-terraform: プライベートなVPCにあるEC2にSession Managerで接続出来るようにする構成
相変わらず、コンソールで操作→terraform import→terraform planで差分がなくなるまで修正が面倒。
この作業はしょうがないと自分では思っているが、世のterraformer達はもっと良いやり方とか知っているのだろうか?