Amazon AppStream2.0とは
Amazon AppStream2.0は、サーバー上で動かすアプリケーションの画面をインターネットを通じてユーザーのブラウザーに動画配信するサービスです。デスクトップ仮想化のように利用することができます。アプリケーションの実行はAWS内(AppStreamサーバー上)で実行されるため、データそのものはインターネットの外には出ていかずセキュアに利用できます。また使用した分だけ課金される仕組みです。
料金
公式サイトで確認できます。
AppStreamのフリートインスタンスの種類とOS、月間の利用時間により料金が決まります。
Windowsサーバーの場合、1回でも接続するとRDPライセンス(4.19USD/month、シングルセッションの場合)が必要となりますので、ちょっと自宅でためそうにも少しハードルが高いです。
ここではLinuxインスタンス(RDPライセンス料がかかりません)を使用して動作を確認しようと思います。
アーキテクチャ図
今回予定している構成図です。以前作成したPrivateSubnet1と2にAppStream Fleetを配置します。
IAM Identity Centerをうっすらと表示させている理由は、Amazon Linux 2のストリーミングができたら、接続を試す予定があるためです。
ImageBuilderでイメージを作成
まずはイメージを作成していきます。
マネジメントコンソール > AppStream2.0 > Images と開き、「Image Builder」タブを開きます。
まだ何も作成されていません。「Launch Image Builder」をクリックします。
「Choose an Image」で、AmazonLinux2ベースのイメージを選択します。
投稿時点では2023.11.13のものが最新のようでした。
「Configure Image Builder」で、ImageBuilderの名前設定します。
インスタンスタイプを選択します。一番コストが安い stream.standard.small(1vCPU、2GiB RAM)のTypeを選択しました。
IAM Roleは、ImageBuilderからS3などの他のサービスを利用する場合に設定します。今回利用予定はないため、設定しません。
VPC Endpointsは、VPC内のリソースと通信させる場合に設定します。こちらも利用予定はないため、設定しません。
次に、ネットワークの設定をします。予定していたPrivateSubnet1に配置します。
セキュリティグループも設定します。通信要件がないため、インバウンドは何も許可せず、アウトバンドのみALL許可にしています。
「Review and Create」で作成内容をレビューして問題なければ、「Launch Image Builder」をクリックします。
ImageBuilderの作成が開始されました。ステータスがRunningにかわるまで、5分ほど待ちます。
ステータスがRunnningに変わりました。作成したImage Builderが選択された状態で、「Connect」をクリックします。
Image Builderに接続されました。ここからアプリを登録していきます。
左上「Applicatons」 > 左の9面すごろくみたいなマークから、「Image Assistant」を起動します。
Image Assistantが起動します。「+ Add App」をクリックします。
適当にアプリを選択します。テキストエディターがあったので、それを選択してみました。
「Launch」をクリックします。アプリ起動を最適化してくれるようです。
アプリが起動したことを確認して、「Continue」をクリックします。
登録したアプリの数だけ繰り返します。
作成するフリートイメージの名前を入力して、「Next」をクリックします。
「Disconnect and Create Image」をクリックして、イメージ作成を開始します。
Image Builderへのコネクションが失われます。タブは閉じてください。
「Image Builder」タブに戻ると、ステータスが「Snapshotting」となっています。
10分〜20分はかかる場合があります。気長に待ちましょう。
ステータスが「Stopped」に変わったので、「Image Registory」タブを表示します。
イメージが作成されています。
詳細ページで「Applications」を確認すると、登録したアプリが一覧に表示されています。
これでイメージの準備はできました。
フリート起動
次に作成したイメージを使って、フリートを起動します。
AppStream2.0 > Fleetsへ移動します。
「Create Fleet」をクリックします。
「Configure Fleet」の画面で、フリートの名前を入力します。
インスタンスタイプは、Image Builder同様に一番安いタイプにします。
フリートキャパシティについては、兎に角コストがかかるといやなので、Maximam capacityを1にしました。これで2以上のセッションが接続されることはなくなります。(実際の運用でこんな設定をすることはないと思います。。。)
その他、デフォルトのままにして、「Next」をクリックします。
※今回フリートから他のAWSサービスの利用はないので、IAM rolesも設定しません。
ネットワークを設定します。フリートはサブネットを2つ設定する必要があります。予定していたPrivateSubnet1と2を設定します。通信要件もないため、インバウンドを許可していないセキュリティグループを設定します。
レビュー画面で問題なければ、「Create fleet」をクリックします。
コストがかかる旨の表示がでます。私は〜を了承したのチェックを入れて、「Create」をクリックします。
※本当にコストがかかるので、確認終わったらすぐに停止、削除するつもりです!
フリートの起動が開始されました。起動するまで10分〜20分くらいかかる場合がありますので、気長にまちましょう。
ユーザーを追加
今回はAppStream2.0自身のユーザープールを使用します。AppStream2.0 > userpoolへ移動します。
「Create User」をクリックします。
Emailなど必要な情報を入力して、「Create User」をクリックします。
ちなみに追加したユーザーの削除はGUIではできないため、AWS CLIを使用します。
スタックの作成と、ユーザーとフリートの関連づけ
AppStream2.0 > Stacksへ移動します。
「Create Stack」をクリックします。
ストレージは使用しませんので、チェックは外して「Next」をクリックします。
何にも利用しませんので、チェック外しやDisable選択を怠りません。
レビュー画面で、余分な設定をしていないことを確認したら、「Create Stack」をクリックします。
次にユーザーを割当ます。
User poolの画面で、ユーザー選択 「Action」> 「Assign Stack」をクリックします。
内容を確認して、「Assign Stack」をクリックします。
ユーザーに新しいアプリが利用できるようになった旨のメールが届きます。
AppStreamへアクセス
いよいよストリーミングの準備ができました。
ユーザーのメールにあったログインページのURLへアクセスします。
登録したメールアドレス、パスワードを入力して、「Log in」します。
アプリを選択するとストリーミングセッションの開始が始まります。
ブラウザ上でアプリケーションがストリーミングされるようになりました!
ここまで確認できたので、ログアウトします。
フリートやイメージビルダーは停止してもコストが若干かかるため、完全に削除します。
まとめ
今回は最低限必要な手順を確認しました。Windowsインスタンスを使用することのほうが多いと思いますが、Linuxでもアプリケーションのストリーミングができることを確認できました。