AWS Systems Manager Fleet Manager を利用した リモートデスクトップ接続のメリット解説【2023年3月時点】

Systems Manager Fleet Manager にリモートデスクトップ機能があります。
Systems Manager から EC2 の Windows 環境にアクセスできるとても便利な機能なのです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/32c1024d-da5e-c2d8-9f31-2164fabd96a7.png)
ただ、Windows の標準機能としてのリモートデスクトップ接続もあります。
日頃はこちらを利用されている方が多いのではないでしょうか。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/82ed4223-9192-f65c-b432-35124208c743.png)
そして、Windows の標準機能のリモートデスクトップで問題を感じていない方は「Systems Manager Fleet Managerって何がすごいの？何かメリットがあるの？」と感じる方もいると思います。今回の記事では、解りやすく「Systems Manager Fleet Managerのリモートデスクトップ機能」のメリットを解説します。

なお、WindowsのEC2にアクセスする方法は複数ありますが、今回の記事の対象は以下の通りです。
| 接続方法 | 記事の対象 | 
|:-----------|:-----------:|
|[RDP を使用した Windows インスタンスへの接続<br>※Windows標準の機能](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/connecting_to_windows_instance.html#connect-rdp)|〇|
|[Fleet Manager を使用して Windows インスタンスに接続する<br>k※Systems Manager Fleet Managerの機能](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/connecting_to_windows_instance.html#connect-rdp-fleet-manager)|〇（メイン）|
|[IPv6 アドレスを使用して Windows インスタンスに接続する](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/connecting_to_windows_instance.html#connecting-to-windows-ipv6)|－|
|[Session Manager を使用して Windows インスタンスに接続する](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/connecting_to_windows_instance.html#session-manager)|－|

また、記載内容は個人的なものであり、
所属する企業や組織、団体を代表する見解その他ではありませんので、
ご承知おきください。

# １．想定読者
この記事の想定読者層は以下となります。

## 対象
・Windows の EC2 に対するリモートデスクトップ接続に関心がある人

・Systems Manager Fleet Manager のリモートデスクトップ機能がよく解っていない人

・Fleet Manager と Window 標準のリモートデスクトップ接続の違いがよく解かっていない人

・プライベートサブネットへのリモートデスクトップ接続がイメージできない人
　※完全にパブリックサブネットを作成しないパターンでの接続

## 対象外
・上記に該当しない人


# ２．Systems Manager とは
そもそも Systems Manager とは何でしょうか？
AWS公式サイトの「[よくある質問](https://aws.amazon.com/jp/systems-manager/faq/#General)」には以下の通り記載されています。

>AWS Systems Manager を使用することで、複数の AWS のサービスの運用データを一元化し、AWS リソース全体のタスクを自動化できます。アプリケーション、アプリケーションスタックのさまざまなレイヤー、本番環境と開発環境といったリソースの論理グループを作成できます。Systems Manager では、リソースグループを選択し、その最新の API アクティビティ、リソース設定の変更、関連する通知、運用アラート、ソフトウェアインベントリ、パッチコンプライアンス状況を表示できます。運用ニーズに応じて、各リソースグループに対してアクションを実行することもできます。Systems Manager により、AWS リソースを一元的に表示および管理でき、運用を完全に可視化して制御できます。

Systems Manager は運用面に関する多くの機能が集約されており、AWSの中でも良く利用されるサービスの1つです。
機能の一覧をざっくり記載すると以下の通りです。
1つ1つ魅力的な機能なのですが、ここでの説明は割愛します。
感心のある方はURLからご確認ください。

| 区分 | 機能名 | 記事の対象 |
|:-----------|:-----------|:-----------:|
|アプリケーション管理|[Application Manager](https://aws.amazon.com/jp/systems-manager/faq/#Application_Manager)|－|
|アプリケーション管理|[AppConfig](https://aws.amazon.com/jp/systems-manager/faq/#AppConfig)|－|
|アプリケーション管理|[Parameter Store](https://aws.amazon.com/jp/systems-manager/faq/#Parameter_Store)|－|
|変更管理|[Change Manager](https://aws.amazon.com/jp/systems-manager/faq/#Change_Manager)|－|
|変更管理|[オートメーション](https://aws.amazon.com/jp/systems-manager/faq/#Automation)|－|
|変更管理|[Change Calendar](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/systems-manager-change-calendar.html)|－|
|変更管理|[メンテナンスウィンドウ](https://aws.amazon.com/jp/systems-manager/faq/#Maintenance_Windows)|－|
|ノード管理|[コンプライアンス](https://aws.amazon.com/jp/systems-manager/faq/#Compliance)|－|
|ノード管理|[Fleet Manager](https://aws.amazon.com/jp/systems-manager/faq/#Fleet_Manager)|〇|
|ノード管理|[インベントリ](https://aws.amazon.com/jp/systems-manager/faq/#Inventory)|－|
|ノード管理|[セッションマネージャー](https://aws.amazon.com/jp/systems-manager/faq/#Session_Manager)|－|
|ノード管理|[実行コマンド](https://aws.amazon.com/jp/systems-manager/faq/#Run_Command)|－|
|ノード管理|[ステートマネージャー](https://aws.amazon.com/jp/systems-manager/faq/#State_Manager)|－|
|ノード管理|[パッチマネージャー](https://aws.amazon.com/jp/systems-manager/faq/#Patch_Manager)|－|
|ノード管理|[ディストリビューター](https://aws.amazon.com/jp/systems-manager/faq/#Distributor)|－|
|オペレーション管理|[Incident Manager](https://aws.amazon.com/jp/systems-manager/faq/#Incident_Manager)|－|
|オペレーション管理|[Explorer](https://aws.amazon.com/jp/systems-manager/faq/#Explorer)|－|
|オペレーション管理|[OpsCenter](https://aws.amazon.com/jp/systems-manager/faq/#OpsCenter)|－|
|オペレーション管理|[CloudWatch ダッシュボード](https://aws.amazon.com/jp/systems-manager/faq/#CloudWatch_Dashboards)|－|

:::note info
<B>AWSサービスの「よくある質問」</B><br>
AWSのサービスの概要について理解したいときにおススメなのが「[よくある質問](https://aws.amazon.com/jp/systems-manager/faq/)」です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/7d2dafe0-dd38-8fd8-0267-d35540d5b2a4.png)
例えば Systems Manager だと上記の一覧の通りです。
「このサービスは他のサービスと何が違うのか」といった観点での記載もあります。
まずは調べるときの第一歩として試してみてください。
:::

今回の記事は、この中の Fleet Manager が対象になります。

# ３．Systems Manager Fleet Managerとは
それでは Systems Manager Fleet Manager とは何でしょうか？
AWS公式サイトの「[よくある質問](https://aws.amazon.com/jp/systems-manager/faq/#Fleet_Manager)」には以下の通り記載されています。

>AWS Systems Manager Fleet Manager を使用すれば、リモートサーバー管理プロセスを合理化できます。Fleet Manager を使用すると、AWS およびオンプレミスで実行されているサーバーのフリートを簡単に管理およびトラブルシューティングできます。仮想マシンにリモート接続しなくても、個々のサーバーにドリルダウンして、ディスクとファイルの探索、ログ管理、Windows レジストリ操作、ユーザー管理など、さまざまなシステム管理タスクを実行できます。

このように AWS Systems Manager Fleet Manager 自体も多くの機能がある訳ですが、その機能の1つとして、リモートデスクトップ機能があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/a60c1f27-0af1-1476-3de9-0962c7161d3c.png)
これは、AWSのマネージドコンソール内からWindowsのEC2環境にリモートデスクトップ接続することができる機能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/32c1024d-da5e-c2d8-9f31-2164fabd96a7.png)

これが今回解説する仕組みになります。

# ４．Windows 標準と Systems Manager Fleet Manager でのリモートデスクトップの接続方法
2つのリモートデスクトップ接続方法について解説します。

## ４-１．Windows標準のリモートデスクトップ機能
Windows 標準のリモートデスクトップ接続機能で、WindowsのEC2にリモートデスクトップ接続する方法です。
Windows のデスクトップ画面上で操作します。
最初に mstsc コマンドでリモートデスクトップ接続画面を起動します。
そして、以下の画面からIPを入力して、その後に表示される画面でユーザとパスワードで認証します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/e183a23f-0451-8ec9-e862-0267b3b37ccd.png)
そうするとリモートディスクトップ画面が表示されて、操作ができる訳です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/36a6986d-379b-ce80-b71d-fe004c456889.png)

## ４-２．Systems Manager Fleet Manager のリモートデスクトップ機能
Systems Manager Fleet Manager からWindowsのEC2にリモートデスクトップ接続する方法です。
AWSのマネージドコンソールの Systems Manager Fleet Manager 画面から操作します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/4cf3ba0a-2f81-ebda-64ae-65827a55718f.png)
対象の EC2 を選択して「リモートデスクトップ(RDP)接続」を選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/b08f63db-d7d0-d51e-d3a6-6729b0e68113.png)
ユーザ認証はパスワードでも認証可能ですが、キーペアでも認証が可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/4eeb90c4-fc76-9e75-74a9-557cee02da4b.png)
接続すると以下の様に表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/d85fe290-815f-44d7-03ea-71c4cfb2bb93.png)

# ５．Systems Manager Fleet Manager のリモートデスクトップを利用するメリット
「接続された画面が同じに見えるけれど何が嬉しいの？ RDP 接続でよくない？」と思われる方もいると思うので、私が感じるメリットを解説します。メリットは小～大で分類していますが、大の2つが非常に重要です。

## ５-１．メリット①：キーペアで接続できる（小）
Windows 標準のリモートデスクトップ機能でWindows環境に接続する際には、AWS のマネージドコンソール上でキーペアを変換してパスワードを取得する必要がありました。
何気に面倒くさいですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/7ae0cb30-25e9-d517-8b86-90f833f7855f.png)
Systems Manager Fleet Manager によるリモートデスクトップ接続だと、直接キーペアを設定すればよいので、この手間が軽減できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/c3ec36ea-d627-eccc-9b68-14307e24721a.png)
少しだけ楽です。
なので、メリットとしては「小」です。

## ５-２．メリット②：複数画面の表示が可能（中）
Windows 標準のリモートデスクトップ接続機能で複数接続する為には、複数起動する必要がありました。
Systems Manager Fleet Manager によるリモートデスクトップ接続だと、1つの画面で4台まで起動できます。4台並行して作業をしたい時には便利ですね。もちろん画面の最大化も可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/05b34080-c565-6ceb-6ecf-ebb182cec077.png)

## ５-３．メリット③：httpsでの接続が可能（大）
以下の接続図をご確認ください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/da38e342-cc6e-2a06-812b-4be33e2d9b03.png)
Windows 標準のリモートデスクトップ接続の場合は「RDP（port:3389）」のTCPポートの通信が許可されている必要があります。ただ、環境によってはこの通信が抑止されていて利用できない場合もあります。

Systems Manager Fleet Manager はAWSマネージメントコンソール上で表示できるため、この制限がありません。Web通信を実施しる https （port：443）のTCPポートが許可されていれば通信できる訳です。AWSマネジメントコンソール自体が https 通信なので、実質AWSマネジメントコンソールにアクセスできれば利用できます。これは非常にメリットが大きいです。

なので、メリットとしては「大」になります。

## ５-４．メリット④：プライベートサブネットのEC2にも接続可能（大）
以下の接続図をご確認ください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/12a8b025-2fc1-6460-6f91-1fd4ce0e9b2a.png)
「パブリックサブネット」が無い状態で「プライベートサブネット」のEC2にリモートデスクトップ接続するのは大変です。
ただ、Systems Manager Fleet Manager を利用すれば、EC2 にリモートデスクトップ接続できます。
EC2から Systems Manager の通信をVPCエンドポイントで可能にすることで、接続できるようになる訳です。
これはシンプルで非常に利用しやすい仕組みです。

例えば、「プライベートサブネットしかない環境でEC2の検証をしたい」といった事も簡単に実現できます。

なので、メリットとしては「大」になります。


# ６．ネットワークごとの接続方法
メリット③やメリット④についてイメージして頂くために、ここからは「パブリックサブネット」、「プライベートサブネット」のそれぞれにEC2がある場合の接続方法について解説します。この内容をご理解いただくとメリットを理解して頂きやすくなると思います。

## ６-１．パブリックサブネットの接続
パブリックサブネットで EC2 を起動し、その EC2 に対して Systems Manager Fleet Manager で接続する手順とポイントを説明します。

### ６-１-１． 前提のネットワーク
「パブリックサブネット」環境の解説をします。
今回前提とするネットワークは以下の通りです。
「プライベートサブネット」は存在せず、「パブリックサブネット」だけの環境とします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/719fd27a-771b-effe-9610-d9315a0be696.png)

:::note info
<B>ネットワーク可視化機能「Resource map」(VPC)</B><br>
ちなみに上記のように構成図を記載していますが、2022年に「VPC」の機能として「Resource map」というネットワーク可視化機能がアップデートされています。この機能は、サブネットとルートテーブル、ゲートウェイの紐付けが可視化されます。
こちらはAWSを新しくはじめられる方にとっては、非常に有益な機能だと思います。
まだご存じない方は、是非確認してみてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/862ef066-40a3-996b-8a71-42b21a8e7692.png)
:::

### ６-１-２． EC2の起動
EC2を起動させます。
起動時の EC2 設定のポイントは以下となります。
| 区分 | 説明内容 | 
|:-----------|:-----------|
|AMIの選択|今回はWindowsを前提にするため「Windows」のAMIを選択します。<br>※SSMagentがインストールされていることが前提です。<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/2c2c125a-b0bc-3cc1-3cf4-5e044035d681.png)<br>|
|セキュリティグループ|SSMを利用する場合はインバウンドルールの追加は不要です。<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/d66992e1-1f78-f387-bb4d-e216d16d5fee.png)<br>|
|IAMロール|[以下の条件のIAMロール](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/setup-instance-profile.html)を作成してEC2にアタッチします。<br><br>ポリシー：AmazonSSMManagedInstanceCore<br>※インスタンスで Systems Manager サービスコア機能を使用できます。<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/47b3f90a-b309-e05c-d0fd-226cfcd15121.png)<br>信頼されたエンティティ：ec2.amazonaws.com<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/4d70001b-8a33-db57-67a4-d4c41c4800ad.png)<br>|

:::note info
<B>AMI と SSMagent についての補足</B><br>
今回の Systems Manager Fleet Manager による接続のためには SSM Agent が必須となります。プリインストールされているAMIを利用すると、インスタンス起動後に自動的に Systems Manager に接続します。プリインストールされているAMIかどうかは「[SSM Agent がプリインストールされた Amazon Machine Images (AMIs)](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/ami-preinstalled-agent.html)」を参照ください。

分らない場合は、EC2で PowerShell を起動して「Get-Service AmazonSSMAgent」コマンドで状況を確認できます。
以下の様に表示されればインストールされており、正常に動作しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/3257cc87-206e-3412-9a15-5780b4bd200a.png)
もし SSM Agent がインストールされていない場合は、「[Windows Server 用 EC2 インスタンスに手動で SSM Agent をインストールする](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/sysman-install-win.html)」の手順に従い、 SSM Agent をインストールします。

:::

:::note info
<B>セキュリティグループの設定についての補足</B><br>
Windows 標準のリモートデスクトップ接続をするときには、EC2 にアタッチされたセキュリティーグループのインバウンドルールでRDP（Port：3389）の許可を与えます。
これは、クライアントPC側からリモートデスクトップ接続を実施するためです。
EC2側としてはインバウンドとしてRDPの接続を受けるので、当然インバウンドルールに記載する必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/b21ccc5f-3a00-143f-d655-340a21c5ce61.png)

それに対して Systems Manager Fleet Manager を利用する場合は接続が異なります。
EC2のOSが起動した際に SSM Agent が起動して Systems Manager に接続します。
この接続は EC2 にとってはアウトバウンドルールのため、特段セキュリティーグループで個別の設定をしていない限り許可されます。そして、セキュリティグループはステートフルなので、その後の通信が可能になります。
そのため、インバウンドルールに設定する必要はありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/4f6ce74c-f49f-05f0-1f40-1e4fc663707c.png)

:::

:::note info
<B>EC2 のテンプレート起動</B><br>
EC2 を起動する場合はテンプレートを作成することをお勧めします。
一度テンプレートを作成すると2度目以降に再設定する手間が大きく削減できます。
また、変更した内容のバージョン管理もできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/0c4ab843-f717-f020-41d0-cb9460ebbaf5.png)
まだ、利用されていない方は是非ご活用ください。

:::

### ６-１-３． Systems Manager Fleet Managerからの接続
パブリックサブネットで SSMagant がインストールされた EC2 を起動すると以下のように Systems Manager の「フリートマネージャー」画面に対象の EC2 が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/4ffdb005-427e-c249-86a9-334b06384002.png)

対象の EC2 を選択して「ノードアクション」の「リモートデスクトップ(RDP)との接続」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/f7ab0b82-e4b2-e552-de54-7bde7e549020.png)
ログイン画面が表示されるので、認証タイプを「キーペア」に変更して、「キーペア」をアップロードして接続します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/c9578965-4dd2-2c4e-5728-cef4a367b175.png)
Fleet Manager のリモートデスクトップ接続が実施できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/e674fcc9-7957-2623-63a8-95095c0bcfcf.png)


このように非常に簡単にリモートデスクトップ接続が可能です。
なお、最終的な構成は以下の通りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/a751c422-bba4-7b48-f606-907a308595bc.png)

:::note info
<B>パブリックサブネットの EC2 と Systems Manager 間の通信について</B><br>
パブリックサブネットの EC2 と Systems Manager の接続について補足です。
この接続は EC2 から Internat Gateway （IGW） を経由して Systems Manager に接続することになります。
構成の前提から考えると、左側のようにインターネットを経由しているように思えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/7bbb2af5-24aa-e667-f46e-1e0168fd3848.png)

しかし、それは間違いです。

><b>Q:2 つのインスタンスがパブリック IP アドレスを使用して通信する場合、またはインスタンスがパブリックな AWS のサービスエンドポイントと通信する場合、トラフィックはインターネットを経由しますか?<br>
>
>いいえ。パブリック IP アドレスを使用する場合、AWS でホストされているインスタンスとサービス間のすべての通信は AWS のプライベートネットワークを使用します。AWS ネットワークから発信され、AWS ネットワーク上の送信先を持つパケットは、AWS 中国リージョンとの間のトラフィックを除いて、AWS グローバルネットワークにとどまります。
>
>さらに、データセンターとリージョンを相互接続する AWS グローバルネットワークを流れるすべてのデータは、安全性が保証された施設を離れる前に、物理レイヤーで自動的に暗号化されます。すべての VPC クロスリージョンピアリングトラフィックや、カスタマーまたはサービス間のトランスポート層セキュリティ (TLS) 接続などといった追加の暗号化レイヤーもあります。 

上記の通り「AWS グローバルネットワークにとどまる」のが正解です。これはAWSのVPCの「[よくある質問](https://aws.amazon.com/jp/vpc/faqs/#Connectivity)」に記載があるので、AWSの公式見解です。EC2とAWSサービス間の通信がインターネット上を経由するのかしないのかで、セキュリティの対応内容は大きく変わってきます。ですので、この内容は頭の片隅に入れておいてください。

:::

以上がパブリックサブネットの EC2 の接続方法でした。


## ６-２．プライベートサブネットの接続
プライベートサブネットで EC2 を起動し、その EC2 に対して Systems Manager Fleet Manager で接続する手順とポイントを解説します。

### ６-２-１． 前提のネットワーク
「プライベートサブネット」環境の解説をします。
前提となるネットワークは以下の通りです。
「パブリックサブネット」は存在せず、「プライベートサブネット」だけの環境とします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/065e6cb4-2985-3ad5-60ef-fae8b51551ad.png)
「Resource map」では以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/d041540e-2cea-ba08-a213-99309dcb3a1f.png)
ただ、このままだと「プライベートサブネット」の中の EC2 は外部と接続できません。
Systems Manager とも通信が出来ない状況です。

### ６-２-２． VPCエンドポイントの作成
まずは VPC 内のサブネットから Systems Manager に接続する[「VPCエンドポイント」を作成](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/setup-create-vpc.html)します。「VPCエンドポイント」はインターネットを経由せずに VPC 内からAWSサービスに対してプライベート接続を実施できるサービスです。このサービスを利用する場合、AWSサービスと通信するのに、インターネットゲートウェイ、NAT デバイス、AWS Direct Connect 接続、および AWS Site-to-Site VPN 接続は不要になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/c57cfa3a-34dc-69df-304e-80bd800ce751.png)

「VPCエンドポイント」には「[ゲートウェイ VPC エンドポイント（Gateway VPC Endpoint）](https://docs.aws.amazon.com/ja_jp/vpc/latest/privatelink/vpce-gateway.html)」と「[インターフェイス VPC エンドポイント (AWS PrivateLink)](https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/endpoint-services-overview.html)」の2種類があります。今回は「インターフェイス VPC エンドポイント (AWS PrivateLink)」を利用します。

今回利用の「Systems Manager Fleet Manager」を利用する場合は、[4種類の「インターフェイス VPC エンドポイント」](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/setup-create-vpc.html)を作成する必要があります。

| エンドポイント名 | 説明内容 | 
|:-----------|:-----------|
|com.amazonaws.region.ssm|Systems Manager サービスのエンドポイント。|
|com.amazonaws.region.ec2messages|Systems Manager は、このエンドポイントを使用して SSM Agent から Systems Manager サービスへの呼び出しを行います。|
|com.amazonaws.region.ec2|Systems Manager を使用して VSS 対応のスナップショットを作成する場合は、EC2 サービスへのエンドポイントがあることを確認します。EC2 エンドポイントが定義されていない場合、アタッチした Amazon EBS ボリュームを列挙する呼び出しは失敗し、Systems Manager コマンドが失敗します。|
|com.amazonaws.region.ssmmessages|Session Manager を使用して安全なデータチャネルを経由しインスタンスに接続する場合にのみ必要です。|

:::note info
<B>リージョンごとに異なるインターフェイス VPC エンドポイント</B><br>
上記のエンドポイント名 region 部分にはリージョン名が入ります。例えば今回は「米国西部 (北カリフォルニア)　us-west-1」で実施しましたが、その場合は「com.amazonaws.region.ssm」が「com.amazonaws.<font color="Red">us-west-1</font>.ssm」です。

このように「インターフェイス VPC エンドポイント」はリージョンごとに存在しており、対応している数も異なります。詳細は「[AWS PrivateLink と統合できる AWS のサービス](https://docs.aws.amazon.com/ja_jp/vpc/latest/privatelink/integrated-services-vpce-list.html)」を参照ください。describe-vpc-endpoint-services コマンドでリージョンに存在する「インターフェイス VPC エンドポイント」の一覧を出力することができます。参考に記事作成時点の東京リージョンと大阪リージョンの「インターフェイス VPC エンドポイント」数は以下の通りです。

東京リージョン（ap-northeast-1）：159
大阪リージョン（ap-northeast-3）：70

:::

そして、エンドポイント用のセキュリティグループを作成する必要があります。
必要なのはインバウンドルールに「https」を許可することです。
このセキュリティグループは4種類すべての「インターフェイス VPC エンドポイント」で共有できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/e1e18558-d518-a9bf-cb2f-dc8e2bd5559d.png)

以下の様に4種類の「インターフェイス VPC エンドポイント」を作成します。
これで VPC 内のサブネットから SystemsManager のサービスが利用可能になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/a8e7334e-9d61-a298-cb51-dc204966743a.png)

:::note info
<B>インターフェイス VPC エンドポイントの料金</B><br>
とても便利な「インターフェイス VPC エンドポイント」ですが、利用する際には料金が発生します。

例えば「東京リージョン」だと料金は以下の通りです。
「各AZのVPCエンドポイント1つあたりの料金(USD/時間)」であり、利用期間中は継続的に課金されます。
例えば1カ月利用すると1つあたり「0.014USD * 24時間 * 30日 * 130円/USD = 1,310円」となります。
それなりの費用になるわけです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/8519b7cb-39d3-29c1-673f-8d22f9f03102.png)


詳細は「[AWS PrivateLink の料金](https://aws.amazon.com/jp/privatelink/pricing/)」を参照ください。

:::

### ６-２-３． EC2の起動
EC2を起動させます。
起動時のEC2設定のポイントは以下となります。
基本的にネットワーク設定で「プライベートサブネット」を指定して起動する以外は、「パブリックサブネット」で指定した内容と変わりません。念のため以下の通り再掲します。

| 区分 | 説明内容 | 
|:-----------|:-----------|
|AMIの選択|今回はWindowsを前提にするため「Windows」のAMIを選択します。<br>※SSMagentがインストールされていることが前提です。<br><font color="Red">※「パブリックサブネット」の時の設定と同じです。</font><br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/2c2c125a-b0bc-3cc1-3cf4-5e044035d681.png)<br>|
|セキュリティグループ|SSMを利用する場合はインバウンドルールの追加は不要です。<br><font color="Red">※「パブリックサブネット」の時の設定と同じです。</font><br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/d66992e1-1f78-f387-bb4d-e216d16d5fee.png)<br>|
|IAMロール|[以下の条件のIAMロール](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/setup-instance-profile.html)を作成してEC2にアタッチします。<br><font color="Red">※「パブリックサブネット」の時の設定と同じです。</font><br><br>ポリシー：AmazonSSMManagedInstanceCore<br>※インスタンスで Systems Manager サービスコア機能を使用できます。<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/47b3f90a-b309-e05c-d0fd-226cfcd15121.png)<br>信頼されたエンティティ：ec2.amazonaws.com<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/4d70001b-8a33-db57-67a4-d4c41c4800ad.png)<br>|

### ６-２-４． Systems Manager Fleet Manager からの接続
プライベートサブネットで SSMagant がインストールされたEC2を起動すると以下のように Systems Manager の「フリートマネージャー」画面に対象の EC2 が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/78b01515-7ab6-cf93-c7f9-8cce23fde722.png)

これ以降の接続操作は「パブリックサブネット」と際と同じなので割愛します。
問題なく起動できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/139cf029-ee78-4539-6cdb-5efdd984184d.png)

これで無事接続できました。これで、例えば「プライベートサブネット」で起動している EC2 と、「パブリックサブネット」で起動している EC2 を並べて表示させるなんてこともできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/994cca00-4e5a-b208-5103-3d3635e774be.png)

以上がプライベートサブネットの EC2 の接続方法でした。

### ６-２-５． 特定のインスタンスのみを表示させたい場合
ただ、全部のインスタンスは表示させたくなくて、一部のインスタンスのみ Systems Manager Fleet Manager で表示させたい場合もあるかと思います。特にプライベートサブネットだと、そういうニーズもありそうに思います。

これに関しては色々な制御方法がありますので、1例をご紹介します。

プライベートサブネットの EC2 と Systems Manager の接続は以下のような流れとなります。
途中で経由する「インターフェイスVPCエンドポイント」には「[VPCエンドポイントポリシー](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/setup-create-vpc.html#sysman-endpoint-policies)」を設定できます。
4つのエンドポイントを作成していますが、設定するのは「com.amazonaws.region.ssmmessages」のみです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/b5d8363a-362f-a460-9622-e865d8c634a1.png)

画面上では以下のポリシー設定が対象になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/6345e85b-faf5-75f0-2224-489f2ce94e14.png)

標準のポリシーは以下の通りです。

~~~md:VPCエンドポイントポリシー（修正前）JSON
{
    "Statement": [
		{
			"Action": "*",
			"Effect": "Allow",
			"Principal": "*",
			"Resource": "*"
		}
	]
}
~~~

例えば、特定のIAMロールのみ許可するように設定します。
これはEC2にアタッチしているIAMロールのことです。
以下ですと「IAMロール「test-iam」がアタッチされたリソース(ここではEC2）のみ許可する」ことになります。
なお、「123456789012」にはアカウント IDを入力する必要があります。

~~~md:VPCエンドポイントポリシー（修正後）JSON
{
    "Statement": [
		{
			"Action": "*",
			"Effect": "Allow",
			"Principal": {
				"AWS": "arn:aws:iam::123456789012:role/test-iam"
			},
			"Resource": "*"
		}
	]
}
~~~

実施結果が以下の通りです。
許可と与えたIAMロールがアタッチされているEC2は表示できますが、それ以外のIAMロールがアタッチされたEC2は表示できません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/cca67355-d5ce-63e8-e18c-ccf40f8d82fe.png)

これは、制御の一例であり、運用に合わせて色々な制御が可能かと思います。
環境にあわせて最適な制御方法をご検討ください。

# ７． まとめ
この記事では Systems Manager Fleet Manager を利用した Windows の EC2 環境へのアクセスに関してまとめました。

個人的に感じるメリットは以下の4点です。

<b>メリット①：[キーペアで接続できる（小）](https://qiita.com/Masayuki-Goto/private/1cdc83403c33974a19e4#%EF%BC%95-%EF%BC%91%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88%E3%82%AD%E3%83%BC%E3%83%9A%E3%82%A2%E3%81%A7%E6%8E%A5%E7%B6%9A%E3%81%A7%E3%81%8D%E3%82%8B%E5%B0%8F)</b>
<b>メリット②：[複数画面の表示が可能（中）](https://qiita.com/Masayuki-Goto/private/1cdc83403c33974a19e4#%EF%BC%95-%EF%BC%92%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88%E8%A4%87%E6%95%B0%E7%94%BB%E9%9D%A2%E3%81%AE%E8%A1%A8%E7%A4%BA%E3%81%8C%E5%8F%AF%E8%83%BD%E4%B8%AD)</b>
<b>メリット③：[httpsでの接続が可能（大）](https://qiita.com/Masayuki-Goto/private/1cdc83403c33974a19e4#%EF%BC%95-%EF%BC%93%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88https%E3%81%A7%E3%81%AE%E6%8E%A5%E7%B6%9A%E3%81%8C%E5%8F%AF%E8%83%BD%E5%A4%A7)</b>
<b>メリット④：[プライベートサブネットのEC2にも接続可能（大）](https://qiita.com/Masayuki-Goto/private/1cdc83403c33974a19e4#%EF%BC%95-%EF%BC%94%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88%E3%83%97%E3%83%A9%E3%82%A4%E3%83%99%E3%83%BC%E3%83%88%E3%82%B5%E3%83%96%E3%83%8D%E3%83%83%E3%83%88%E3%81%AEec2%E3%81%AB%E3%82%82%E6%8E%A5%E7%B6%9A%E5%8F%AF%E8%83%BD%E5%A4%A7)</b>


今回の記事は以上になります。
なお、この記事は2023年3月時点の内容になりますので、ご承知おきください。

この記事が皆さんがAWSのサービスを知るうえで、良いきっかけになれば幸いです。

<img width="400" alt="message_goseichou_man.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253105/00277005-a9aa-afb8-f57c-83e2b147947e.png">