今更ながら、AWSのSystem Managerのセッションマネージャーと呼ばれる機能を知りましたので、今回はとりあえず触ってみるくらいの気持ちで記事を書いてみます。
今回やりたいことにドンピシャな、以下のブログ記事を参考にしています。
セッションマネージャーを使ってWindows serverのEC2インスタンスにアクセスする | DevelopersIO
セッションマネージャーとは?
簡単に言えばAWSマネジメントコンソールから、構築したEC2インスタンスにアクセスするためのサービスです。
別にAWSマネジメントコンソールからアクセスしなくても、SSHやリモートデスクトップ接続でログインできるからこんな機能いらないのではないか、と思いますが実はこのセッションマネージャーを使えばSSHやリモートデスクトップ接続用のポートの穴あけ作業も不要でEC2に簡単に、しかも安全にアクセスできるサービスみたいです。
詳細の説明等は、公式サイトや他の有志のブログ記事にお任せします。
IAMロールを作成する
AWSマネジメントコンソールから、セッションマネージャーを使用してEC2にアクセスするためには、適切なIAMロールをアクセスするEC2インスタンスに設定する必要があるようです。
まずは、IAMにアクセスして左のペインから「アクセス管理」-「ロール」を選択して、「ロールを作成」ボタンをクリックします。
信頼されたエンティティタイプは、「AWSのサービス」を選択して、ユースケースは「EC2」を選択します。
EC2はさらに複数のサービス毎のユースケースを選択できるようですが、デフォルトのまま「次へ」を押下します。
ロールに付与する許可ポリシーを指定する画面が開きますので、AmazonSSMManagedInstanceCoreを検索して選択して、「次へ」を押下します。
次にロールの名前を入力する画面が開きますので、任意の値を入力し画面下の「ロールの作成」ボタンを押下します。
これで必要なIAMロールの作成が完了します。次は、このIAMロールをEC2に付与します。
IAMロールをEC2に付与する
上記までで、IAMロールを作成しましたので今度はそのIAMロールをEC2に付与します。
今回は、既にEC2インスタンスは作成済みの状態で進めたいと思います。また、セッションマネージャーを使って接続するためには、もう一つ必要な準備として、EC2インスタンスにSSMエージェントをインストールしておく必要があります。今回は既にインストール済の状態として進めたいと思います。
EC2の画面に遷移して、対象のEC2インスタンスを選択してから「アクション」-「セキュリティ」-「IAMロールを変更」を押下します。
IAMロール変更画面に遷移するので、先ほど作成したIAMロールを選択してから「IAMロールの変更」を押下します。
これで準備が整いました。次は、実際にセッションマネージャーを使ってEC2インスタンスにアクセスしてみます。
EC2インスタンスにセッションマネージャーでアクセスする
それでは、今までの手順でようやく準備が整いましたので実際にセッションマネージャーを使って、EC2にアクセスしてみましょう。
対象のEC2インスタンスを選択してから、「接続」を押下します。
するとこんな画面が開きます。むむむ、参考のURLの手順通りやっているのですが何やら接続ができないようです。
少々調べてみたら、「起動中のEC2にIAMロールを割り当てた場合はEC2インスタンスの再起動が必要」という記載をどこかの記事で見かけたので再起動してからもう一度アクセスしてみました。
すると、今回は以下のように先ほどの警告メッセージが表示されませんでした。同じような方がおりましたら、再起動をして少々時間をおいてから試すとうまくいくかもしれません。
それでは、気を取り直して「接続」を押下してみましょう。
「接続」ボタンを押下したら、別タブが開き以下のようなコンソール画面が表示されました。成功です!今回は接続先のEC2は、Windows ServerであるためPowerShellが自動的に起動して接続する形になりました。
おわりに
いかがでしょうか。AWSのセッションマネージャーで、実際にEC2のWindows Serverへ接続することができました。
Windows Serverの場合は、普段はリモートデスクトップ接続で作業するのですがこのような選択肢があることを知っておくことは大事かなと思いました。
今回はこの辺で失礼いたします。最後までお読みいただきありがとうございました。