
こんにちは、TC部所属のN.Nです。
今回は Amazon AppStream 2.0 について、実際の案件で構築してみてわかった「基本的な仕組み」と「最低限必要な構築ステップ」をまとめます。
AppStreamは、アプリケーションのみを配信できるサービスです。
利用者にWindowsのデスクトップやOS設定を触らせたくない場合に特に有効で、アプリケーションのみ配信したい場合に活躍します。
この記事はこんな方におすすめです。
- AWSは使っているが、AppStreamは初めて
- AppStreamの全体像をざっくり把握したい
- 最小限の構築ステップを知りたい
AppStream 2.0とは
概要
AppStream 2.0 は、AWSが提供するアプリケーションストリーミングサービスです。
クライアント環境にアプリをインストールせず、ブラウザから利用できます。
特徴
アプリケーションのみを配信することにより、OSやWindowsの機能を利用者に触らせない構成が可能です。(設定でDesktopを配信させることも可能です)

基本構成の理解
AppStreamは以下の要素で構成されます。
- イメージ(Image)
アプリと設定をまとめた仮想マシンのテンプレート。これを元に配信されます。 - イメージビルダー(Image Builder)
イメージを生成するための作業環境。 - フリート(Fleet)
ユーザーにアプリを提供するサーバー。スケーリング設定もここで行います。 - スタック(Stack)
ユーザーにどのアプリをどの設定で配信するかを定義します。 - ユーザープール(User Pool)
利用するユーザーを登録します。

この5つを理解しておくと、構築手順がスムーズになります。
構築してみよう
構築環境
今回、AppStreamを構築するAWS環境は以下となります。

AppStreamの最小構築手順
AWSコンソールにあるAppStreamサービスから構築します。

手順は以下の公式サイトに則り、実施します。
Image Builder を起動し、ストリーミングアプリケーションをインストールして設定する - Amazon AppStream 2.0
※あくまでAppStreamの構築手順のため、VPCなどのネットワーク周りや必要なIAMロールは、事前に作成しているものとします。
1.イメージビルダーを起動
AWSコンソールからOSやインスタンスタイプを選択し、起動します。
主な設定
- OS
- インスタンスタイプ
- ネットワーク
- イメージビルダーからインターネットに出れるような構成にする(アプリのインストール時、インターネットと通信するため)
- セキュリティグループ
- 最低限、443ポート(または80ポート)は開放
etc...
追加設定
- IAMロール
- AppStreamからAWSサービスを操作したい場合は設定
- AppStream用のポリシー(AmazonAppStreamFullAccess)などが付与されているロールを選択
- Active Directory
- イメージビルダーを組織のActive Directoryに参加させたい場合は設定


2.アプリケーションをインストール
イメージビルダー内で必要なソフトウェアや設定を行います。
※ソフトウェアのインストール方法や基本設定は通常のWindows上の設定方法と同じです。
基本設定
- 日本語化
- タイムゾーン etc...
利用したいアプリのインストール
- 例)VSCode
※インストールしたアプリケーションのパスはメモしておきましょう。
※複数のアプリをインストールして配信することも可能です。

3.イメージを作成・登録
基本設定とアプリのインストールが完了したら、イメージ化を実施します。
※先ほどメモしたパスをLaunch Pathに入力してください。





これでイメージの作成が完了しました。
次はこのイメージをどのようにユーザーに展開するかを決めます。
4.フリートを作成
接続数やインスタンスタイプ、スケーリング設定を決定します。
主な設定
- Minimum capacity(最小接続数)
- フリートの常時起動台数を指定する項目
- 設定値が高いほど、未使用時でも料金が発生
- Maximum capacity(最大接続数)
- フリートの最大接続台数を指定する項目
- 設定値以上の接続依頼があった場合、ユーザは接続不可となる
- Images(イメージ)
- イメージビルダー内で作成したイメージ「test-image」を選択
- ネットワーク
- フリートからインターネットに出れるような構成にする
- サブネットは2つ指定必須(障害時の切り替えやスケーリングのために複数AZ構成を取る必要があるため)
etc...
追加設定
- IAMロール
- AppStreamからAWSサービスを操作したい場合は設定
- AppStream用のポリシー(AmazonAppStreamFullAccess)などが付与されているロールを選択
- Active Directory
- フリートを組織のActive Directoryに参加させたい場合は設定
その他、フリートのスケーリング設定やセッション維持時間なども設定できますが、詳細は割愛します。




フリートの構築が完了しました。
これで、イメージをどのように配信するか、決めることができました。
次は、ユーザーが利用できる範囲を指定します。
5.スタックを作成
ユーザに配信するアプリや設定、コピー&ペーストやファイル転送などの操作可否を定義します。
主な設定
- フリート
- 使用するフリートを選択(後から変更が可能)
- クリップボード
- コピー&ペーストを許可する場合は選択
- タイムゾーン
- リモートセッションのタイムゾーンをローカルにするか否か選択
etc...



スタックの作成が完了しました。
6.ユーザープールの作成
イメージの配信方法を決めたフリートと
ユーザーの利用範囲を設定したスタックが作成完了した後、
利用するユーザーを登録します。
登録内容
- First name
- 名前をローマ字で入力
- Last name
- 苗字をローマ字で入力


ユーザープールの作成が完了しました。
登録したメールアドレス宛に初回パスワードが記載されたメールが届いているか確認します。

7.スタックを割り当て
作成したユーザープールとスタックを連携させ、ユーザーへアプリの配信を開始します。
連携はスタックの画面にて行います。
1ユーザに複数のスタックを割り当てることも可能です。


これで、AWS側の構築作業は終了です。
さっそく、AppStreamへ接続してみましょう。
8.AppStreamへの接続
AWSから自動で送信されたメールを確認し、ログインURLを選択してください。ログインすると以下の画面が表示されます。(初回ログイン時はパスワードの変更を求められます。)

利用したいアプリ、VSCodeを選択します。

接続できました!
これでVSCodeが利用できます!
案件で分かった注意ポイント
- ユーザープールの削除はコマンドから
- ユーザープールの削除は、コンソールから実施できない
- CloudShellからコマンドを実行し、削除する必要がある
- スケーリング設定は適切に
- フリートは、最小起動台数と最大起動台数が設定できる
- 最小台数(=常時起動台数)を多くしすぎると、利用が少ない時でもコストがかかる
- サービスクォータの上限
- AppStreamには利用できるリソースに上限数がある(稼働可能なフリート数やユーザプールに登録できるユーザ数など)
- 必要に応じサービスクォータにて、AWSへ上限緩和申請を行う必要がある(事前に上限数と、必要になるリソース数を確認しておく)
- アプリの更新時はイメージの再作成が必要
- イメージビルダー内でイメージ化したアプリをユーザーに配信している
- アプリを更新したい場合、イメージビルダーから再度、イメージを作成する必要がある(実際の運用では、イメージ更新のタイミングなどを取り決めておくとよい)
まとめ
今回は、Amazon AppStream 2.0 の概要と最低限必要な構築ステップを紹介しました。
AppStreamは、適切に構成すればとても便利にアプリを配信できるサービスです。
本章では紹介しませんでしたが、「セッションスクリプト」という設定もあります。(ユーザーのストリーミングセッションが開始される前に、セッションスクリプトを使用して AppStream 2.0 環境を準備できるもの)
それらを使用し、よりニーズにあった利用ができるとよいですね。
参考サイト
https://d1.awsstatic.com/webinars/jp/pdf/services/20191126_AWS-BlackBelt_AmazonAppStream2.0.pdf
Amazon AppStream 2.0 とは何ですか? - Amazon AppStream 2.0
Amazon AppStream 2.0 Service Quotas - Amazon AppStream 2.0
この記事を書いた人

ニックネーム:NN
経歴:入社3年目です。主にAWSのインフラ案件に携わってきました。最近はBIツールにも触れています。
一言:港町や海沿いの風景が好きです。写真は、横浜の海を撮影したものです。神戸や熱海、舞浜のあたりも好きです。