Amazon AppStream 2.0の各設定項目を解説しつつ、Quick Linksのサンプルアプリケーションをセットアップしてみた

2024.05.27

はじめに

Amazon AppStream 2.0の各設定項目を解説しつつ、Quick LinksでAWSが提供するサンプルアプリケーションをセットアップしてみました。

AppStream 2.0は、デスクトップアプリケーションにオンデマンドでアクセスできるようにする、マネージド型のアプリケーションストリーミングサービスです。

Quick Linksでのサンプル アプリケーションのセットアップ手順は、AWSドキュメントにも記載されていますが、実際の設定項目にはいくつか異なる点があるため注意が必要です。

サンプルスタックをセットアップ

左側のナビゲーションメニューから [Quick Links] を選択し、[Set up with sample apps] をクリックします。

スタック詳細

以下の通りに設定します。すべてデフォルト設定です。

  • Name:スタック名
    • ExampleStack
  • Description:説明
    • This is a sample stack with sample applications
  • `Display Name:スタックの表示名。
    • 指定しません
  • Redirect URL:エンドユーザーがストリーミングセッションの終了後にリダイレクトされる URL
    • 指定しません
  • Feedback URL:ユーザーがフィードバックを送信するための URL を指定します。
    • 指定しません
  • Streaming Endpoint:AppStream 2.0のVPCエンドポイントを設定すると、VPC 経由でストリーミングできます。設定しない場合、インターネット経由でストリーミングされます。
    • Internet
  • Host domains:AppStream 2.0 ストリーミングセッションをウェブページに埋め込むドメインを指定します。HTTPS経由でのみサポートされます。
    • 指定しません

Streaming Endpointの項目について、インターネット経由でAppStream 2.0のアプリケーションにアクセスする構成は以下の通りです。

AWSが管理するVPC内に存在するストリーミングゲートウェイを経由して、ストリーミングインスタンス(フリートインスタンスやImage Builder)にアクセスできます。

Streaming EndpointにVPCエンドポイントを設定すると、以下の通りインターネットを介さずにアプリケーションをストリーミングできます。設定する場合、事前にAppStream 2.0のVPCエンドポイントを作成する必要があります。

引用:https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_Amazon-AppStream-2.0_0228_v1.pdf

イメージ選択

ここではAWSが提供するイメージまたは自分のアカウントで作成したイメージから選択できます

今回は、AWS側で用意された「Amazon-AppStream2-Sample-Image-03-11-2023 (Public)」を選択します。

フリートの構成

インスタンスタイプは、デフォルトの「stream.standard.medium」を選択します。

フリートタイプの選択肢は、以下の2つです。今回は、Always-Onを選択します。

  • Always-On
    • 即座にユーザーがアプリにアクセスできます。ストリーミングしているユーザーがいない場合でも、フリート内で実行中のすべてのインスタンスに対して料金が発生します。
  • On-Demand
    • ユーザーのセッションの開始時間は約 1~2分かかります。アプリをストリーミング時、Always-Onと同等のフリートインスタンス料金が発生しますが、アプリをストリーミングしていない場合、フリートインスタンスごとに少額の時間料金のみが請求されます。

どちらもフリートを停止すると料金は発生しません。

上記とは別にユーザー料金も発生します。

Microsoft Windows Server を実行しているフリートインスタンスでストリーミングセッションを開始した各ユーザーに Microsoft Remote Desktop Services Subscriber Access License (RDS SAL) 料金が課金されます。

シングルセッションフリートの場合、ユーザーごとに 1 か月あたり 4.19 USDが請求されます。

RDS SAL 料金は、当月にストリーミングセッションを開始した各ユーザーについて全額課金され、按分計算はされません。

なお、Amazon Linux 2 オペレーティングシステムを使用するフリートインスタンスからのストリーミングの場合、ユーザー料金は発生しません。

ユーザーセッションについては以下の3つを設定します。すべてデフォルト値にしました。

  • Maximum session duration in minutes:最大セッション継続時間(分)
    • ストリーミングセッションの最大時間を設定します。
    • デフォルト値では最大960分まで利用できます。
  • Disconnect timeout in minutes:切断タイムアウト (分)
    • ユーザーが切断後、ストリーミングセッションをアクティブのままにする時間を設定します。
    • デフォルト値では切断してから15分間アクティブのままです。
  • Idle Disconnect Timeout in minutes:アイドル切断タイムアウト (分)
    • ユーザーがストリーミングセッションから切断されるまでにアイドル状態 (非アクティブ) であることができる時間
    • 以下の場合、ユーザーのアクティビティではなく、アイドル状態であると見なされます。
      • ファイルのアップロードやダウンロード
      • オーディオ入力、オーディオ出力
      • ピクセルの変更
    • デフォルト値では、アイドル状態が15分間続くと、セッションが切断されます。

フリートキャパシティでは、以下の3つを設定します。全てデフォルト値にしました。

  • Multiple user sessions:単一のインスタンス上で複数のユーザーで利用するマルチセッション構成
  • Minimum capacity:最小容量
    • 予想される同時ユーザーの最小数に基づいて、フリートインスタンスの最小数を選択します。
    • デフォルトは1です。
  • Maximum capacity:最大容量
    • 予想される同時ユーザーの最大数に基づいて、フリートインスタンスの最大数を選択します。
    • デフォルトは5です。

Stream viewでは、アプリケーションのみをストリーミングするか、もしくはデスクトップ自体を利用できるようにするか選択します。

今回は、アプリケーションのみを選択します。

IAMロールを適用するかどうかを選択します。フリートインスタンスでAWS CLIの実行環境を提供したり、他のAWSサービスにアクセスが必要な場合設定します。

今回は不要なので適用しません。

スケーリング設定はデフォルトのままとします。デフォルトでは、メトリクスのうちインスタンス使用率(Capacity Utilization)が75%を超えると、インスタンスを2つ増やし、25%未満まで下がるとインスタンスを1つ減らします。

他のメトリクスや他のスケーリングについては、以下をご参照ください。

ネットワーク構成

ネットワーク構成では以下の2点の設定が必須です。

  • 「Default Internet Access」の有無
  • VPCやサブネット、セキュリティグループの設定

「Default Internet Access」は、AppStream 2.0のストリーミングインスタンス(フリートインスタンスやImage Builder)にインターネットアクセスを提供するオプションです。

AWSが管理するVPC内にあるストリーミングインスタンスは、パブリックサブネット上のElastic Network Interface(ENI)を通じてElastic IPアドレスを取得し、インターネットに接続します。なお、Elastic IPの所有者はユーザーアカウントではなくAWSです。

ただし、インターネットから直接アクセス可能なため、「Default Internet Access」の代わりにNATゲートウェイを使用して、ストリーミングインスタンスに対してインターネットアクセスを提供することが推奨されています。

「Default Internet Access」を有効にした場合、サポートされるフリートインスタンスの最大数は100に制限されます。

ストリーミングインスタンスがインターネットアクセスを必要とする場合、以下のいくつかの実現方法があります。

  • [推奨]プライベートサブネットとパブリックサブネット(+ NATGateway)
    • ストリーミングインスタンスをプライベートサブネットで起動し、パブリックサブネットにNATゲートウェイを設定します
    • インスタンスにはプライベートIPが割り当てられ、インターネットから直接アクセスできません
    • ストリーミングインスタンスの数が100を超える場合に有効です
  • パブリックサブネット(+ Default Internet Access を有効)
    • ストリーミングインスタンスをパブリックサブネットで起動し、デフォルトのインターネットアクセスを有効化します
    • インスタンスにはパブリックIPが割り当てられ、インターネットから直接アクセス可能
    • ストリーミングインスタンス数が 100 未満の場合であれば、有効です。
  • デフォルトVPCとパブリックサブネット(+ Default Internet Access を有効)
    • AppStream 2.0を手っ取り早く開始できます
    • デフォルトVPCを使用することで、新しいVPCを作成する手間を省くことができます。ただし、セキュリティや柔軟性の面では、自身でVPCを作成するほうがよいでしょう。

推奨構成イメージは以下です。

引用:https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_Amazon-AppStream-2.0_0228_v1.pdf

今回は、さっと試したいので、「パブリックサブネット(+ Default Internet Access を有効)」の方法を採用します。

サブネットにはパブリックを選択します。

セキュリティグループの設定は、アウトバンドルールにおいてすべてのトラフィックを許可し、インバウンドルールは不要です。

ストレージの設定

AppStream 2.0は、以下の永続的ストレージオプションをサポートしています。

  • ホームフォルダ
  • Google Drive for Google Workspace
  • OneDrive ビジネス向け

ホームフォルダを有効にすると、ユーザーが自身のホームフォルダに保存したデータは、S3バケットへ自動的にバックアップされ、ユーザーは後続のセッションでもデータにアクセスできます。

ホームフォルダは、シングルセッションの場合、 フリートインスタンスの以下の場所に保存されます。

  • C:\Users\PhotonUser\My Files\Home Folder

ホームフォルダを有効にすると、S3バケットが自動で作成されます。

今回はホームフォルダのみを有効化しました。

ユーザー設定

ユーザー設定では、以下が設定可能です。すべてデフォルトの設定にしました。

  • クリップボード
    • ローカルからリモート、リモートからローカルへコピーアンドペーストが可能
  • ローカルデバイスにコピーする文字制限 - オプション
    • ローカルからリモートセッションに貼り付ける文字数制限
    • リモートセッションからローカル デバイスに貼り付ける文字数制限
  • ファイル転送
    • ローカルからアップロード、リモートセッションからダウンロードが可能
  • ローカルデバイスへの印刷を有効にする
  • Active Directoryの認証方法
    • パスワードもしくはスマートカードサインイン
  • アプリケーション設定の永続化
    • ユーザー毎に以下の設定情報がS3バケットに保存されます。ストリーミングセッション後に自動保存され、次のセッションでも同様の設定で利用可能
      • ブラウザのお気に入り
      • ウェブページセッション
      • プラグイン
      • UIのカスタマイズ

作成されるリソース

AppStream 2.0のENIのほか、以下が自動作成されます。

  • S3
    • appstream-app-settings-リージョン名-アカウントID-gyz5cx1f
      • アプリケーション設定の永続化
    • appstream2-36fb080bb8-リージョン名-アカウントID
      • ホームフォルダ
  • CloudWatchメトリクス
  • CloudWatchアラーム

AppStream 2.0に接続

AppStream 2.0に接続します。

接続方法は以下の3つの方法がありますが、今回はストリーミングURLを作成して接続します。

  • SAML 2.0
  • AppStream 2.0 ユーザープール
  • ストリーミング URL

Create Streaming URLをクリックします。

適当なユーザー IDを入力します。URLが有効な期間の長さも指定します。

発行されたURLに遷移すると、複数のアプリケーションが選択可能です。画面右上の[Try the new Portal]をクリックします。

firefoxを選択します。

firefoxが起動できました。

料金

今回のセットアップにおいて、AppStream 2.0として課金される料金は2つです。

  • Always-On
    • stream.standard.mediumの場合、0.12USD/時間
    • フリートを停止した場合、料金はかかりません
  • ストリーミングセッションが発生した当月に対して、Windows OSを実行しているフリートインスタンスでストリーミングセッションを開始した各ユーザーに RDS SAL料金が課金されます
    • シングルセッションフリートの場合、ユーザーごとに 1 か月あたり 4.19 USD
  • フリートを停止すると、かからない

最後に

今回は、Amazon AppStream 2.0の各設定項目を解説しながら、サンプルアプリケーションをセットアップしてみました。

各設定項目を一つ一つ確認することで、AppStream 2.0に対する理解が深まりました。この記事がどなたかの参考になれば幸いです。