AppStream 2.0 でマルチセッションを行う

# はじめに

[2023 年 10 月ごろに、AppStream 2.0 で 1 個の仮想インスタンスを複数のユーザーが共有して利用できるマルチセッション機能が一般提供開始になりました。](https://aws.amazon.com/jp/about-aws/whats-new/2023/10/amazon-appstream-2-0-session-fleets-windows-server-os/) 複数ユーザーでインスタンスを共有でき、コスト効率化といったメリットがあります。

マルチセッションをどのように利用できるのか知見がなかったので、構築手順と共に細かな Tips を確認していきます。



# Image Builder の作成

AppStream 2.0 マルチセッションで、イメージテンプレートをカスタマイズできるか確認をしていきます。

イメージをカスタマイズするために、Launch Image Builder を押します。

![image-20250211112121382.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/35c3c15c-2541-4233-9411-e90802ce1514.png)



Windows Server 2022 を選択します。

![image-20250211113358458.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/9fc72dd3-b233-45c2-9d47-aa90e3e82722.png)



VPC は適当に指定します。

- NAT Gateway をひもづけている Private Subnet に配置する

![image-20250211115653148.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/71b77fd5-340f-4ccf-828c-93f197aa3068.png)

Launch を押します。

![image-20250211113458305.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/ca431952-b127-4dd1-9629-93bd595ff189.png)

Pending となっています。

![image-20250211113504537.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/4341ac33-ab01-415b-991a-911f3b682a6c.png)







# Image Builder に接続

作成した Image Builder が Running になったので、これをカスタマイズするために接続をします。

![image-20250211115136196.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/8e465a3a-5676-452c-8dd8-c0dd8f546c5b.png)



Connect を押します。

![image-20250211115147579.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/c857050e-868f-4df2-8e3a-8448a6caeff9.png)



ログインするユーザーを選択可能です。Administrator を選択して、独自のカスタマイズをしていきます。

![image-20250211115226844.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/85a59915-b455-4b67-b1a4-20a5de57d0c1.png)



Web Browser 上で Windows Server 2022 の画面が開かれました。

![image-20250211115254360.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/80316d45-8633-4d35-9da7-bb969d836080.png)



なお、このときには、Windows OS 上で利用しているユーザーは、`imagebuilderadmin` ユーザーを利用しています。

```
Microsoft Windows [Version 10.0.20348.2762]
(c) Microsoft Corporation. All rights reserved.

C:\Users\ImageBuilderAdmin>whoami
ec2amaz-ofhgion\imagebuilderadmin

C:\Users\ImageBuilderAdmin>
```





# Chrome のインストール

下記の URL からインストーラーをダウンロードして、Chrome をインストールします。興味が無ければ、読み飛ばして頂いて大丈夫です。

https://chromeenterprise.google/browser/download/#windows-tab



Google Chrome をインストールします。

![image-20250211121045542.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/5cf0e1ff-a460-4511-be46-37189dba5e89.png)



Google Chrome を Install している様子です。

![image-20250211121131531.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/fa10d1d1-754c-4d15-a716-e139a00cda5f.png)



インストールされると、Desktop に Chrome の Icon が表示されました。

![image-20250211121158469.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/620f3edc-3ee0-4055-b90b-4b3c920cdc39.png)



Chrome を開くと、通常通りに利用が能です。

Don's sign in

![image-20250211121223454.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/682a1f8e-45c0-4cc0-af65-21dfb6e2ae48.png)



Set as Default

![image-20250211121235150.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/ed7b0de2-0318-4371-b37a-7a2a1023234e.png)



# Image Assistant で Image 作成

Image Assistant で Image を作成していきます。Desktop に Icon があり、これを利用します。

![image-20250211123202130.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/9df2c109-dd91-437a-8b47-d1940cc85a37.png)



Add App を押します。

![image-20250211123220816.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/a2adddb3-9a60-4875-894c-b2056a808bc9.png)



Chrome を選択します。

> C:\Program Files\Google\Chrome\Application

![image-20250211123247423.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/5aae3874-658f-42f2-89a1-b7176e2a8933.png)



Save を押します。

![image-20250211123302933.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/33e8dc13-bf54-4a86-86f1-0dc518383f55.png)



Next を押します。

![image-20250211123316116.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/35726051-3a32-4956-ac33-082a3352d7fd.png)



Next を押します。

![image-20250211123331086.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/26ed4407-943c-42d0-9db8-435873475161.png)



Next を押します。

![image-20250211123533733.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/21bde35e-9d56-48c4-a9df-d8b955730566.png)



Image の名前などを入れて、Next を押します。

![image-20250211123642260.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/08345b79-3ade-43d3-b229-06296ab93618.png)



Disconnect and Create Image を押します。

![image-20250211123655749.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/dc962763-b0ce-42f8-afed-489d00402b20.png)



Image Builder の Status が Snapshotting に変わっています。作成完了まで 35 分ほどかかる様子です。

![image-20250211123718448.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/a9b99f20-6c09-4735-96a2-45d0ce55847b.png)



Status が Stopped になっています。

![image-20250211140612725.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/93b8e08c-7e76-4dd5-bad0-d83db8c69c1f.png)



Image Registry に登録されています。

![image-20250211140645633.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/c081c650-a246-46e8-ba0d-9165328bb2be.png)



# Fleet の作成

AppStream 2.0 で Fleet を作成していきます。

![image-20250211140713447.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/1bb0728e-c723-40d0-a7dc-4380cdae69a2.png)



On-Demand を選択します。

![image-20250211140731765.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/a4e9b1b9-c8ee-4af7-8930-61368059b339.png)

重要な設定がこちらです。**Multiple user sessions** の選択肢を有効化します。これにより、マルチセッション機能が有効化できます。

- Maximum sessions per instance を 2 と指定することで、1 個のインスタンスに、同時に 2 セッションまで接続できます。最大 50 まで指定可能ですが、50 で快適に利用できるかというと、要検証です。(多分重そう・・・。)
- Stream view を Desktop とすることで、デスクトップをそのまま利用可能。

![image-20250211141240769-1739250769787.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/99837031-3907-42f8-ae1b-dfe7f8ebf23d.png)

Image の指定です。独自に作成した Image を指定します。

![image-20250211141447240.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/8327e8f4-e7ed-4f7e-91a6-954cfcf924e5.png)



Network の指定

- Internet へのアクセスを有効化するために、Private Subnet で作成します。

![image-20250211141714667.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/a1c40df8-e76b-4132-bb48-0fab80bacf81.png)



Create fleet を押します。

![image-20250211141640284.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/98236b61-95f1-489c-a7d4-d66216bea5d1.png)



Create を押します。

![image-20250211141647897.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/cb2917b7-686b-428c-9196-dd0195015cde.png)



Fleet が作成されました。

![image-20250211141736922.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/faf4500e-e102-489b-b500-8bd7b4c3b083.png)



インスタンスが立ち上がっている様子がわかります。

![image-20250211142405505.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/6bcf2aa4-9504-456b-b500-a9f0948045e8.png)



# Stack の作成

Create Stack を押します。

![image-20250211142445918.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/73fd88de-52cd-4e9b-8ab6-0d1642716708.png)



作成した Fleet を選択します。

![image-20250211142540432.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/4df5aa4f-d76d-4271-b7f6-164d8fcc97dd.png)



データを永続的に保存してくれるホームフォルダを有効化 (デフォルトで有効化されている)

![image-20250211142621722.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/6fefe220-9d57-47d3-924f-ad09a159d156.png)



これ以外はデフォルトのままです。

![image-20250211142724485.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/a1fc89c9-6d9a-45dd-9c6c-e32afc63c2a4.png)



Create Stack を押します。　

![image-20250211142737065.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/da0244d7-0343-465d-b55f-f0899be5d67c.png)



# User Pool で User を作成して接続確認

AppStream 2.0 の中にあるローカルの User Pool を作成して、接続確認をしていきます。

![image-20250211154421871.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/5d2df078-ca40-4fa6-bbbf-94661a18bde6.png)



Email などを入力します。

![image-20250211154528432.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/8971880a-7d3d-4aa7-870f-5515f61a61c7.png)

作成した User を Stack に紐づけます。

![image-20250211154601763.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/ac7c43b1-d483-4533-a8f4-c541d79f2abb.png)



Send email notification to user を選択して、アクセス URL をユーザーにメールでお知らせします。

![image-20250211154620252.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/6d6f9814-9f69-4c05-a7b1-bb0cbcb88821.png)



次のようなメールが、登録したメールアドレスに自動送信されます。

![image-20250211154718622.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/c705ec78-aff7-4f38-85fc-60f619086674.png)





利用者側でブラウザにアクセスすることで、ログインが可能です。

![image-20250211154835077.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/3ec8ecbb-2088-45bb-86d1-c7060fe08ed7.png)



本パスワードを入力します。

![image-20250211154846206.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/98c8c2da-707e-42e6-8a86-bb944aaaa3d3.png)



ログイン後に、AppStream 2.0 で設定した Desktop や Chrome が選択できる画面となります。

![image-20250211154901152.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/8f747258-ae3d-445c-9db0-98223987c8c6.png)



Desktop を選択して、ブラウザ上でその環境にアクセスをします。

![image-20250211154919196.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/30d2c371-fe19-427c-bbf9-83f4ecbac115.png)



1 ~ 2 分で接続が出来ました。Image Builder で、Chrome をカスタマイズしましたが、これがデスクトップに見えます。無事にマルチセッションで接続ができました。

![image-20250211155045694.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/7bd6316a-2429-426f-811a-a595808cbfa1.png)



# Tips : AppStream 2.0 上の Windows Server としての User

AppStream 2.0 のマルチセッションを利用して接続した場合は、OS 上のユーザー名はランダムな名前となっている。

```
Microsoft Windows [Version 10.0.20348.2762]
(c) Microsoft Corporation. All rights reserved.

D:\AS2-e7da73ada66b0f41>whoami
ec2amaz-g0r4enm\as2-e7da73ada66b0f41

D:\AS2-e7da73ada66b0f41>
```



なお、C ドライブ配下に、このインスタンス上で利用しているユーザーのフォルダが見える。

![image-20250211161243028.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/2fccddd3-5eea-4d12-a653-63f510763f25.png)



# Tips : キーボード入力を日本語に選択可能

画面上部の Preferences から、キーボード入力を日本語に選択可能。この設定を一度行うと、AppStream 2.0 側で覚えててくれており、次回接続時は設定しなくてもよい。

![image-20250211155444589.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/d5fc6ea1-a271-4027-89be-f28c1ea3314f.png)



これによって、Alt + 全角半角を押すことで日本語入力が可能

![image-20250211155522665.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/9cdaafea-dab9-4aba-a06d-8cd9634d4044.png)



# Tips : Home Folder

This PC の中に、Home Folder が見える。これは、永続的な保存領域となっている。

![image-20250211155905265.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/3cf44583-4c53-4c6c-a1c3-ada5a2cb2aa8.png)



この中にファイルを入れる。

![image-20250211155814166.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/07d80aa8-d36f-43e2-8136-f08544359b74.png)



ログオフして、再度アクセスしてみると、Home Folder はデータが保持されている。

![image-20250211162220583.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/e88a81b3-cc42-4ae8-af52-dec174719e73.png)



# Tips : ローカルとリモートのファイル転送

My Files から、Home Folder などを対象に、手元のファイルのアップロードやダウンロードが可能。

![image-20250211160005395.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/1de09806-ad07-4254-aab4-96e065503abc.png)



アップロードやダウンロードが可能

![image-20250211160124706.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/dc4cbf56-5d79-45b9-83cd-5b55b7d2a246.png)



# Tips : 管理者権限は利用不可

AppStream 2.0 の利用ユーザー側で管理者権限は利用不可。

![image-20250211155145526.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/0c5f4dd5-bde1-47ac-86a0-2bd86949827d.png)



# Tips : クリップボードの転送

ローカルの PC と、AppStream 2.0 の間は、クリップボードの転送が可能。 (ただし、クリップボードを利用したファイル転送は不可)



# Tips : Web Camera は現時点では利用不可

マイクは利用可能。

![image-20250211160500526.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/025d0479-d277-4cc2-9c18-76e40444e937.png)



# Tips : AppStream 2.0 の Fleet 配下のインスタンスの状況が簡単に確認可能

- ActualUserSessionCapacity : AppStream 2.0 の Fleet で提供できるセッションの全体の数
- https://docs.aws.amazon.com/ja_jp/appstream2/latest/APIReference/API_ComputeCapacityStatus.html

![image-20250211160657548.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/bd5c1cf2-c9c8-4954-82c3-8e668368bff2.png)



利用セッションと、利用インスタンス id が確認できる

- EC2 の画面では、このインスタンスは確認できない

![image-20250211160902034.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/483a402b-d2a5-4af3-9263-c51c45ef8d62.png)



対象のセッションを Terminate することが可能

![image-20250211161030549.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/91173fb8-f246-448c-a463-e9d40c184dfe.png)



# Tips : デスクトップのデータは非永続化

Desktop 上のデータは、非永続化されたデータとなります。

例えば、以下のように、テキストファイルをデスクトップに保存します。

![image-20250211161405623.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/713401f2-39c2-4ad2-9071-362979cab077.png)



なお、切断するときは、Windows 上で Disconnect を押すのではなく、

![image-20250211161431897.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/068f52cd-93ea-4d2c-8de2-83505fa32a5b.png)



次のように、右上のアイコンから、Log out を選択します。

![image-20250211161601384.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/5bc287e3-8f67-446b-a06c-03b969dcc11e.png)



Log out を押します。

![image-20250211161610904.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/a8c9d65e-5c50-44d4-835e-0b25e656fcc5.png)



数分後、再度ログインを行う。

![image-20250211161524774.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/f2ca5e86-9650-4ade-9ca8-2a8c7562f287.png)



再度、Desktop を選択

![image-20250211161936295.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/c92233b4-1d89-48b2-8f05-61bfa89a7e6e.png)



デスクトップ上のファイルは消えている。

![image-20250211162142385.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/f0c35879-ef84-419c-8c85-fde34cae3aae.png)



# Tips : AppStream 2.0 インスタンスの一時的なストレージの容量

AppStream 2.0 で提供されているインスタンスの一時的なストレージは、200 GB となっている。(EBS 相当の理解)

https://docs.aws.amazon.com/ja_jp/whitepapers/latest/best-practices-for-deploying-amazon-appstream-2/image-creation-and-management.html

> アプリケーションのデプロイを計画するときは、[サービスのエンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/aas2.html)に注意してください。さらに、イメージを作成する前に、インストーラファイルとヘルパーファイルをクリーンアップして C ドライブの総容量を最適化してください。AppStream 2.0 インスタンスには 200 GB の固定サイズボリュームが 1 つあることに注意してください。固定サイズのボリュームを超えないようにするには、インストール後にディスク容量を最適化することがベストプラクティスです。



# Windows Client からアクセス

以下の URL から、Windows や Mac で利用できる AppStream の Client をダウンロードできます。

https://clients.amazonappstream.com/

![image-20250211162324154.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/64e6d8ec-e9b5-4b2a-8b2d-629f08a3d7b7.png)



AppStream 2.0 をインストールするときの画面。ログを有効化。

![image-20250211162435619.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/8c04e564-940e-4c90-a659-d654be545abd.png)



Finish

![image-20250211162451324.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/df908530-85ff-4184-ae60-8cbffcd3f908.png)



メールで共有された URL を使って接続が可能。

![image-20250211162515424.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/11b87752-c3fc-4e12-a4e9-c7368a93e85a.png)



ログイン画面

![image-20250211162541242.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/9da08359-d06d-4d68-a8f8-3ad4c031fa63.png)



Desktop を選択

![image-20250211162553784.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/258377d9-46a4-47a6-ab6f-f4a282e0b9ce.png)



接続ができた

![image-20250211162943866.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/f7d7dd0d-c47a-42d3-9ae5-74238405b4e7.png)



Windows Client で動作確認した機能メモ

- Home Folder のアップロードダウンロード
- キーボードの入力切替
- ローカル PC と、AppStream 2.0 接続先との間の、クリップボードの共有
- Multi-Session ではカメラは利用不可。マイクは OK。



# 検証でわかったこと

- マルチセッション機能を利用できる OS の制限について

  - [2025 年 2 月現在、Windows Server 2019 or 2022 のみ利用できる制限がある。](https://docs.aws.amazon.com/appstream2/latest/developerguide/base-image-version-history.html)

  - > Multi-session fleets are supported only for Microsoft Server 2019 and 2022.

- 1 インスタンスあたり、最大で 50 ユーザーの接続が上限

  - ただし、50 ユーザーで接続したときに快適に利用できるかというと、そうではない場合が考えれる。快適に利用するための、参考となる計算式は、[こちらの ドキュメント](https://docs.aws.amazon.com/ja_jp/appstream2/latest/developerguide/multi-session-recs.html)で説明されている。

- GPU についてもマルチセッションで複数ユーザーの接続をサポートしている。ただし、Service Quota について、上限緩和を気にする必要がある。g4dn や g5 はデフォルトで 0 になっているはずなので、適宜上限緩和の実施が必要。