Cloud Service
Amazon AppStream 2.0
デスクトップアプリケーションをサーバー側で実行し、ブラウザ経由で安全にストリーミング配信するフルマネージドのアプリ仮想化サービス
- 1.アプリ本体はAWS側のインスタンスで動き、利用者には画面のピクセルだけがブラウザにストリーミングされる
- 2.イメージビルダーで作成したアプリイメージをフリートで配信し、フリートとスタックで配信単位を構成する
- 3.Always-On・On-Demand・Elasticの3つのフリート種別と、永続化のためのホームフォルダやユーザー設定の仕組みを持つ
Amazon AppStream 2.0 は、Windows やLinuxのデスクトップアプリケーションをAWS上のインスタンスで実行し、その画面をストリーミングとしてエンドユーザーのブラウザへ配信するフルマネージドのアプリケーション仮想化サービスです。利用者は専用クライアントの導入や高性能な端末を用意せずに、対応ブラウザだけでアプリを使えます。
解決する課題
業務アプリの中には、各端末へのインストールやバージョン管理が煩雑なもの、高いGPUやメモリを要求するもの、ライセンスやデータの所在を厳しく管理したいものがあります。これらを利用者の手元の端末で動かそうとすると、配布・更新・サポートのコストが膨らみ、機密データが各端末に分散するリスクも生まれます。
AppStream 2.0 はアプリの実行をAWS側に集約し、画面だけを配信することで次のような課題を解決します。
- 端末ごとのインストールやアップデート作業をなくし、アプリの配布と更新を中央で一元管理できる
- 重い処理やGPUを要するアプリを、低スペックな端末やシンクライアントからでも利用できるようにする
- アプリとデータがAWS側に留まるため、端末側にデータを残さずに機密情報を扱える
- 短期契約者や外部委託先など、端末を管理下に置けない利用者にも安全にアプリを提供できる
主要概念と用語
- イメージビルダー: アプリをインストール・設定して配信用のイメージを作成するための専用インスタンス。ここで動作確認したアプリをイメージとして保存する。
- イメージ: 配信するアプリと設定をまとめたテンプレート。フリートはこのイメージを基にインスタンスを起動する。
- フリート: ユーザーにアプリを配信するインスタンスの集合。インスタンスタイプやスケーリング、フリート種別をここで設定する。
- スタック: フリートと、ユーザー向けの設定(ストレージの永続化、ユーザー設定の保存、アクセス制御など)を束ねる単位。ユーザーはスタックに対してアクセスする。
- フリート種別: インスタンスの起動・課金方式の違い。常時起動のAlways-On、利用時に起動するOn-Demand、プールから割り当てるElasticの3種類がある。
- ストリーミングプロトコル: 画面のピクセルと音声をクライアントへ送り、入力を戻すための通信。低遅延での操作を実現する。
- ホームフォルダ: ユーザーのファイルをセッションをまたいで永続化する仕組み。裏側ではマネージドのストレージに保存される。
- アプリケーションエンタイトルメント: どのユーザーにどのアプリを見せるかを制御する仕組み。属性に基づいてアプリの表示を絞り込める。
仕様・制限・クォータ
- フリートは画面配信に使うインスタンスタイプを選択でき、汎用・コンピュート最適化・GPU搭載など、アプリの要件に応じたファミリーを使い分けられる。
- ユーザーへの提供方法として、独自のIDプロバイダーと連携するSAMLによるシングルサインオンと、ユーザー単位のURLを発行するユーザープールの方式がある。
- セッションには最大の継続時間やアイドル時の切断時間といった上限を設定でき、放置されたセッションを自動で終了させられる。
- 同時セッション数やフリート数などはアカウント単位・リージョン単位のクォータで管理され、一部は引き上げ申請が可能だが固定の上限もある。
- 提供できるOSやサポートされるブラウザにはバージョンの前提があり、対応状況は変動するため公式ドキュメントで確認する必要がある。
フリート種別の選択は起動の速さと課金に直結します。Always-On は即座に利用できる代わりに待機中も課金され、On-Demand は待機中の料金を抑えられる代わりに起動に時間がかかります。利用パターンを見極めて選ぶことが重要です。
内部の仕組み
ユーザーがスタックにアクセスすると、フリートのインスタンス上で対象のアプリケーションが起動し、その画面がストリーミングプロトコルで圧縮されてブラウザへ送られます。ユーザーのマウスやキーボードの入力は逆方向に送られ、サーバー側のアプリへ反映されます。実際に動いているのはAWS側のインスタンスであり、端末側はあくまで表示と入力の窓口として機能します。
フリートはイメージを基にインスタンスを起動します。Always-On と On-Demand のフリートはあらかじめ確保した容量からセッションを割り当て、スケーリングポリシーに従って容量を増減させます。Elastic フリートはアプリをイメージに焼き込む代わりに、アプリのパッケージを参照してプールされたインスタンスへ割り当てる方式で、容量管理の負担を抑えます。
ホームフォルダやアプリケーション設定の永続化は、セッション終了時にユーザーのファイルや設定をマネージドストレージへ同期し、次回のセッション開始時に復元することで実現されます。これにより、ステートレスなインスタンス上でもユーザーごとの作業環境を維持できます。
設計パターン / ベストプラクティス
- 利用が日中の業務時間に集中するなら、スケジュールやスケーリングポリシーで時間帯に応じて容量を増減させ、夜間の待機コストを抑える。
- 即応性が必要な用途には Always-On、コストを優先する間欠利用には On-Demand、容量管理を簡素にしたい場合は Elastic、と用途でフリート種別を選び分ける。
- アプリのバージョン更新はイメージビルダーで新しいイメージを作り、検証後にフリートへ割り当てることで、本番への影響を抑えながら更新する。
- ユーザーごとに見せるアプリを変えたい場合は、エンタイトルメントと属性を使って表示を制御する。
- 既存の認証基盤がある場合はSAML連携によるシングルサインオンを採用し、ユーザー管理を一元化する。
- VPCやサブネットの設計を行い、社内システムやファイル共有へ必要な経路だけを開ける。
アプリの更新は新しいイメージを作って検証してから切り替えると、不具合が出ても旧イメージへ素早く戻せます。フリートが参照するイメージを差し替えるだけで切り戻せるよう運用を組むと安全です。
運用・監視
- CloudWatch でフリートの容量使用率や利用可能なインスタンス数、セッションのスロットリングなどのメトリクスを監視し、容量不足や過剰を把握する。
- 利用状況のレポートを有効にすると、セッション開始や継続時間といった利用実績を集計し、課金やキャパシティ計画の根拠にできる。
- CloudTrail でフリートやスタックの作成・変更といった管理操作を記録し、監査に利用する。
- スケーリングポリシーを使って容量を自動調整し、ピーク時の待ち時間と平常時の無駄を両立させる。
- イメージの更新やアプリの入れ替えは定期的な運用作業として手順化し、検証用フリートで確認してから本番へ反映する。
コスト
AppStream 2.0 の料金は、おおむね使用したインスタンスの稼働時間に対する従量課金と、ユーザー単位の月額料金の組み合わせが基本です。Always-On のフリートは待機中も稼働時間として課金される一方、On-Demand のフリートは待機中の料金を抑えられ、利用された時間に対して課金されます。
加えて、ストリーミングに使うインスタンスのタイプやサイズ、データ転送、永続化ストレージの利用量などがコストに影響します。正確な料金は変動するため、設計時には公式の料金ページで最新の体系を確認し、利用パターンに合うフリート種別とスケーリングを選んでコストを最適化してください。
コストの大きな要因はインスタンスの稼働時間です。利用時間帯に合わせてスケジュールやスケーリングで容量を絞り、間欠利用には On-Demand を選ぶと、待機中の無駄な課金を減らせます。
セキュリティ
- アプリとデータはAWS側のインスタンスで処理され、端末にはピクセルだけが届くため、機密データを端末に残さずに扱える。
- フリートのインスタンスはVPC内に配置でき、セキュリティグループやサブネット設計で通信経路を制御できる。
- セッション終了時にインスタンスを破棄・再構築する運用により、ユーザー間でのデータ残留を避けられる。
- IAMによる管理操作の権限分離と、SAML連携によるシングルサインオンで、利用者と管理者のアクセスを適切に分ける。
- クリップボードやファイル転送、印刷などの機能はスタックの設定で制限でき、データの持ち出しを抑制できる。
クリップボードのコピーやローカルへのファイル転送を無制限に許可すると、せっかくサーバー側に集約したデータが端末へ流出する恐れがあります。要件に応じてこれらの機能を制限し、持ち出し経路を絞ってください。
Well-Architected の観点
セキュリティの柱の観点では、AppStream 2.0 はアプリの実行とデータの保持をAWS側へ集約し、端末にデータを残さない構成を取りやすくします。VPC配置やセッション分離、クリップボード・ファイル転送の制限といった機能は、データ保護とアクセス制御の両面を支えます。
運用上の優秀性の観点では、アプリの配布と更新をイメージとして中央管理できるため、端末ごとの個別作業を排除し、更新の一貫性と切り戻しのしやすさを高められます。CloudWatch や利用状況レポート、CloudTrail による可観測性と監査性も、運用の継続的な改善とトレーサビリティの確保に寄与します。
試験で問われるポイント
- AppStream 2.0 はアプリ仮想化(アプリのストリーミング配信)であり、デスクトップ全体を提供する仮想デスクトップとは目的が異なることを区別できること
- アプリ本体はAWS側で実行され、端末にはブラウザ経由で画面が配信される仕組みを理解していること
- Always-On・On-Demand・Elastic のフリート種別の違いと、起動の速さおよびコストへの影響を押さえていること
- イメージビルダーでイメージを作り、フリートとスタックで配信単位を構成するという基本構造を理解していること
- 端末にデータを残さず機密情報を扱いたい、外部委託先に安全にアプリを提供したい、といった要件で選定される点を押さえていること
関連サービス・比較
仮想デスクトップを提供する Amazon WorkSpaces としばしば比較されます。両者はAWS側で処理を行いブラウザや専用クライアントから利用する点は似ていますが、提供する単位が異なります。
| 観点 | AppStream 2.0 | Amazon WorkSpaces |
|---|---|---|
| 提供する単位 | 個別のアプリケーション | デスクトップ環境全体 |
| 主なユースケース | 特定アプリをブラウザで安全に配信 | リモートワーク向けの常設仮想デスクトップ |
| 利用形態 | セッション単位でアプリをストリーミング | ユーザーごとに割り当てた持続的なデスクトップ |
| 向いている場面 | 間欠利用や外部委託先へのアプリ提供 | 従業員の日常的な業務端末の置き換え |
特定の業務アプリだけをブラウザで安全に届けたいなら AppStream 2.0、フル機能のデスクトップを各ユーザーに持たせたいなら WorkSpaces、という使い分けが基本です。
ハンズオン / CLI例
CLI でフリートを作成し、スタックに関連付けてからフリートを起動する例です。あらかじめ作成したイメージ名を指定します。
# イメージを基に On-Demand フリートを作成する
aws appstream create-fleet \
--name demo-fleet \
--image-name demo-image \
--instance-type stream.standard.medium \
--fleet-type ON_DEMAND \
--compute-capacity DesiredInstances=2
# スタックを作成する
aws appstream create-stack --name demo-stack
# フリートをスタックに関連付ける
aws appstream associate-fleet \
--fleet-name demo-fleet \
--stack-name demo-stack
# フリートを起動して配信を開始する
aws appstream start-fleet --name demo-fleet
AWS Service
Amazon AppStream 2.0を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
エンドユーザー / VDI
比較で見る軸
クラウド: AWS / カテゴリ: エンドユーザー / VDI / 難易度: intermediate
導入後に効く点
イメージビルダーで作成したアプリイメージをフリートで配信し、フリートとスタックで配信単位を構成する
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- AWS
- カテゴリ
- エンドユーザー / VDI
- 難易度
- intermediate
- 関連資格
- SAA-C03
- 設計柱
- security / operational
判断チェックリスト
- 自社の用途が「エンドユーザー / VDI / security」に近いか確認する。
- 強みである「アプリ本体はAWS側のインスタンスで動き、利用者には画面のピクセルだけがブラウザにストリーミングされる」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。