セッションマネージャーを使ってEC2にブラウザからアクセスする(インターネットに接続できないインスタンスの場合)
インターネットへの接続がないEC2インスタンスへ、セッションマネージャーで接続してみます。
参考:
前提条件
・EC2にはSSM Agentをインストールします。ここでは適用済みのAmazon Linuxを使用します。
目次
- VPCの設定(「DNSホスト名」を有効化する)
- VPCエンドポイント用のセキュリティグループの作成
- EC2インスタンス用のセキュリティグループの作成
- VPCエンドポイントの作成
- EC2インスタンスにアタッチするIAMロールを作成
- IAMロールをEC2インスタンスにアタッチする
- セキュリティグループをEC2に適用する
- ブラウザから接続してみる
- 「セッションマネージャー」のエラーが出た場合
VPCの設定(「DNSホスト名」を有効化する)
・新しく作成、または既存のVPCの「アクション > DNSホスト名を編集」にて、「DNSホスト名」を有効化します。
VPCエンドポイント用のセキュリティグループの作成
・VPCエンドポイントにアタッチするセキュリティグループを作成します。
「インバウンドルール」は、
タイプ:HTTPS
ソース:カスタム > 10.0.0.0/16 などVPC内全体をあらわすIPアドレス範囲を設定。
「アウトバウンドルール」は削除します。(アウトバウンドを許可しなくても通信できるため)
EC2インスタンス用のセキュリティグループの作成
・EC2インスタンスにアタッチするセキュリティグループを作成します。
インバウンドルールは削除。アウトバウンドルールは全接続を許可。
※今回は他のサーバや外部との通信を行わないので、インバウンドルールは設定しません。
VPCエンドポイントの作成
・「VPC」にて「エンドポイント」>「エンドポイントを作成」から作成。
作成するVPCエンドポイントは4つ。
サービス名は次のとおり。それぞれ作ります。
・com.amazonaws.ap-northeast-1.ssm
・com.amazonaws.ap-northeast-1.ec2messages
・com.amazonaws.ap-northeast-1.ssmmessages
・com.amazonaws.ap-northeast-1.s3
※4つめの com.amazonaws.ap-northeast-1.s3 は、「タイプ」が「Gateway」の方を選択します。
※ご注意
Interfaceタイプのエンドポイントは、課金されます。(1つあたり$0.014 / 月)
エンドポイントは3つ作成するので、$0.014 x 3つ x 24時間 x 30日 = $30.24/ 月
1ドル115円で換算すると、115円 x $30.24 = 3477.6円/月 かかることになります。
EC2インスタンスにアタッチするIAMロールを作成
・「IAM」を開き、ロールを作成します。
「信頼されたエンティティタイプ」:「AWSのサービス」
「ユースケース」:「EC2」
「許可ポリシー」の検索窓に「AmazonSSMManagedInstanceCore」と入力して検索し、選択します。
IAMロールをEC2インスタンスにアタッチする
・「EC2」を開きます。アタッチするEC2インスタンスを選択して、「アクション > セキュリティ > IAMロールを変更」を押します。
※EC2インスタンスをまだ作成していないときは、ここで作成します。
「IAMロール」に、先ほど作ったIAMロールを選択します。
セキュリティグループをEC2に適用する
・セッションマネージャで接続したいEC2インスタンスを選択して、「アクション > セキュリティ > セキュリティグループを変更」を押します。
「関連付けられたセキュリティグループ」の検索窓から、EC2インスタンス用に作成したセキュリティグループをアタッチします。
ブラウザから接続してみる
・接続したいEC2インスタンスを選択して、「接続」ボタンを押します。
「セッションマネージャー」タグを選択して「接続」を押します。
接続されます。
※普段使用する ec2-user にログインするには、次のコマンドを実行します。
sh-4.2$ sudo su ec2-user
「セッションマネージャー」のエラーが出た場合
※EC2インスタンスとセッションマネージャーが通信できるようになるまで、10分~20分程度かかります。
「セッションマネージャー」のエラーが出た場合は、各設定値を確認しながら再度接続してみてください。