AWS SSM Fleet Manager を使ってEC2 WindowsインスタンスにRDP接続してみた

# 初めに
AWS Systems Manager Fleet Managerを利用して、プライベートサブネットに配置したWindowsServerにWeb GUIからRDP接続してみました。

# 検証構成図
![検証構成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527101/9beca0aa-a38e-28c0-cacc-e2b873314ef1.png)

# 検証前提
以下は実施済みの前提となります。
* 検証構成図に記載のAWSネットワーク環境（VPC、サブネット）作成
* EC2インスタンス(Windows)作成

# 事前準備
1. SSMエージェントのインストール  
2. IAMロールの作成
3. IAMロールのアタッチ
4. SSM関連エンドポイントの作成  

## 1. SSMエージェントのインストール  
WindowsServerをAWS公式のAMIから構築した場合にはSSM Agentがすでにインストールされています。  
![SSMエージェントインストール確認.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527101/ca8ce2ce-e594-3b66-63c7-02e3314442f7.png)

## 2. IAMロールの作成
IAMポリシー「AmazonSSMManagedInstanceCore」を設定した、IAMロールを作成します。

![SSM_IAMロール作成(1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527101/8293d330-4006-8664-0fea-e5297f1972dd.png)

信頼されたエンティティタイプ：AWSのサービス、ユースケース：EC2 を選択
![SSM_IAMロール作成(2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527101/d2b98021-4b7a-18d0-c169-c64a2a72c30c.png)

「AmazonSSMManagedInstanceCore」をチェックし、ポリシーをアタッチ
![SSM_IAMロール作成(3.5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527101/4890e370-b6a8-f440-3497-42c1f8722cb3.png)

任意のロール名を設定（ここではSSM-Test-Role）
![SSM_IAMロール作成(4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527101/cef3b343-5084-fa8a-ce2e-6c8c71921d42.png)

必要に応じてタグを設定し、ロールを作成
![SSM_IAMロール作成(5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527101/390faabf-f813-cd3f-7fc3-0b5db2e6d52f.png)

ロールが作成されたことを確認
![SSM_IAMロール作成(6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527101/f62dd87c-3662-ade8-1545-9394e101d896.png)

## 3. IAMロールのアタッチ
作成したIAMロールを対象のインスタンスにアタッチします。

IAMロールを変更を選択し、IAMロール設定画面に遷移
![SSM_IAMロール(1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527101/01c48ee7-fe2e-8758-31e7-5a254088e7ac.png)

作成したIAMロールをアタッチ
![SSM_IAMロール(3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527101/76d34f96-37f8-3c8e-fcf0-302839eced7c.png)

正常にアタッチされたことを確認
![SSM_IAMロール(4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527101/3edf582d-41bb-fcf8-669b-7e25a0daa8b5.png)

IAMロールの反映のためEC2インスタンスを再起動

:::note info
IAMロールの反映について、EC2の再起動は必須ではありません。
SSM AgentがIAMロールを検出するまで待機するか、SSM Agentの再起動により反映ができます。
[参考：既存の IAM ロールを EC2 インスタンスに割り当てるにはどうすればよいですか?](https://aws.amazon.com/jp/premiumsupport/knowledge-center/assign-iam-role-ec2-instance/)
:::

![SSM_IAMロール作成(8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527101/664ea94e-fd8a-5cbd-64b6-6fa9ec6f6e7c.png)

## 4. SSM関連エンドポイントの作成  
以下のエンドポイントを作成します。

SSM Session Managerとの通信用エンドポイント ※セキュリティグループでは、VPC内からHTTPS（443）のインバウンド通信を許可
`com.amazonaws.ap-northeast-1.ssm`
`com.amazonaws.ap-northeast-1.ssmmessages`
`com.amazonaws.ap-northeast-1.ec2messages`
[AWS SSMユーザーズガイド ステップ 6: (オプション) AWS PrivateLink を使用して Session Manager の VPC エンドポイントを設定する](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager-getting-started-privatelink.html)

例としてエンドポイント：com.amazonaws.ap-northeast-1.ssmの作成手順を記載
![エンドポイント作成(1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527101/e3505ea5-2f89-acb8-07b5-e639ffc0ebca.png)

対象VPCを選択、DNSを有効化をチェック、対象サブネットを選択
![エンドポイント作成(2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527101/622fad01-9ae4-a5b5-704c-bbe857263aad.png)

対象のセキュリティグループを選択
セキュリティグループでは、VPC内からHTTPS（443）のインバウンド通信を許可しておく
![エンドポイント作成(3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527101/17c02715-691a-d842-ea52-c0ec1ba35a6e.png)

（例）セキュリティグループ　ルール
![セキュリティグループ作成(3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527101/8960d66d-4802-b45f-5d16-176d73d183ec.png)

任意のタグを設定し、エンドポイントを作成
![エンドポイント作成(4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527101/475d3c38-8349-be4f-31a5-409064e639fd.png)

エンドポイントが作成されたことを確認
![エンドポイント作成(5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527101/30e38941-54b6-b779-9941-5e4027c81ddd.png)

同様の手順で、
com.amazonaws.ap-northeast-1.ssmmessages
com.amazonaws.ap-northeast-1.ec2messages
についても作成
![エンドポイント作成(7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527101/d1e443ff-fc18-6a24-7a6d-670002a76f6d.png)

# SSM Fleet Managerを利用したWindowsインスタンスへの接続確認
ここまでの事前準備が完了したら、Windowsインスタンスへの接続確認を行っていきます。

##  1. Fleet Manager上への表示確認
![フリートマネージャ接続(1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527101/fb42ed74-c389-1ad8-899a-8080e8aa04fd.png)

対象ノードがマネージドノード一覧に表示されていることを確認
![フリートマネージャ接続(2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527101/eef49587-9a71-2484-c1a5-955620ef7f5c.png)

##  2. Fleet ManagerからのRDP接続確認
[ノードアクション]-[リモートデスクトップ(RDP)との接続]を選択
![フリートマネージャ接続(3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527101/651bdfb7-6fc6-3db3-8161-272f853a6564.png)

認証情報を入力し（ここでは認証タイプをユーザ認証情報として接続）Connectを選択
![フリートマネージャ接続(4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527101/171c6a29-c7af-a5ea-7d53-c148b3fba57d.png)

接続ができました。
![フリートマネージャ接続(5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527101/c760b4a2-efec-8ad2-b804-0a0eaee26bed.png)

# 最後に
プライベートサブネット上のWindowsインスタンスへの接続に関して、
Bastionインスタンスを用意してssh転送などを行わなくても直接GUI画面接続が可能となります。Bastionインスタンスが不要となり、構築後の運用・保守の面でも便利な機能なので、積極的に活用していければと思います。