AppStream 2.0入門ガイドやってみた

2020.04.13

初めてAppStream 2.0を学ぶにあたり、以下の AppStream 2.0: 入門ガイド をやってみました。

やってみた成果: AppStream 2.0の基本概念がわかった

  • AppStream 2.0は、ブラウザ(もしくはAppStream 2.0 クライアント)からユーザーが特定のアプリケーションを利用できるようにするサービスです。
  • アプリケーションの配信はコンピューティングリソース(EC2 インスタンス)から行われます。このコンピューティングリソースには2つのENIがあります。
    • ひとつはAWS管理のVPCに対するENIで、ユーザーはこのVPCを通してアクセスしてきます。
    • もうひとつはアプリケーション配信者が管理するVPCに対するENIで、配信者のその他のITリソースと連携するため、またコンピューティングリソースで発生したトラフィックのアウトバウンド経路として使われます。
  • まずは配信に使うコンピューティングリソースのイメージの構築が必要です。EC2でいうところのAMIのようなものと捉えました。
  • イメージの構築には、ベースイメージからImage Builderと呼ばれるインスタンスを立ち上げ、
    1. そのインスタンスにリモートアクセスし、
    2. アプリケーションをインストールします。
    3. インスタンス内にプリインストールされているImage Assistantというツールを使って、インストールしたどのアプリケーションを配信するのか選択、設定します。
    4. イメージを作成します。(ここまで終わればImage Builderは停止します)
  • 作成されたイメージがImage Registryに登録されます。
  • 次にフリートを作成します。フリートとは前述のイメージを実行するインスタンス、もしくはその設定のことで、使うイメージ(Image Registry内から選択)、インスタンスタイプ、台数などの設定が必要です。
  • さらに、スタックというフリートの上位概念の作成も必要です。使用するフリート、ストレージの設定、ユーザーのアクセスポリシー(クリップボードが使えるかなど)を設定します。
  • ユーザープールにユーザーを作成し、スタックを割り当てることで、そのユーザーがスタックのアプリケーションを利用することができます。(アプリケーションを利用できるURLとパスワードが書かれたメールがユーザーのアドレスに送られるので、ユーザーはそこからアプリケーションの利用を開始できます)

ここからは、実際入門ガイドをやってみて私が躓いたところをレポートしていきます。以降の段落は入門ガイドの目次に沿っています。

ステップ 1: AWS マネジメントコンソールにサインインし、AWS リージョンを選択する

特に躓いた点はありませんでした。

ステップ 2: ネットワークリソースを作成する

CFnへのリンクが無い

日本語版のPDFガイドだとCFnスタック作成のリンクが設定されていませんでした。英語版のガイドにあった以下リンクで、東京リージョンのCFnスタック作成ページに遷移できます。

CFnスタック作成がエラーになる

サブネット作成で以下エラーになりました。

Value (ap-northeast-1b) for parameter availabilityZone is invalid. Subnets can currently only be created in the following availability zones: ap-northeast-1c, ap-northeast-1a, ap-northeast-1d. (Service: AmazonEC2; Status Code: 400; Error Code: InvalidParameterValue; Request ID: xxxxxxx)

ap-northeast-1bのAZは古いAWSアカウントでしか使用できないAZです。そのためエラーになったようです。

仕方が無いので使われているCFnテンプレートをダウンロードして修正します。

以下の通り38行目を修正すればOKです。

PrivateSubnet2:
        Type: 'AWS::EC2::Subnet'
        Properties:
          VpcId: !Ref AppStreamDemoVPC
+         AvailabilityZone: !Join [ "", [ !Ref "AWS::Region", "c"] ]
-         AvailabilityZone: !Join [ "", [ !Ref "AWS::Region", "b"] ]
          CidrBlock: 10.0.2.0/24
          MapPublicIpOnLaunch: false
          Tags: 
            - 
              Key: Name
              Value: AppStream2 Private Subnet2

作成されるリソース概要は以下です。

  • VPC
  • パブリックサブネット1つ
  • プライベートサブネット2つ
  • インターネットゲートウェイ
  • NATゲートウェイ
  • ElasticIP(NATゲートウェイにアタッチ)

ステップ 3: AppStream 2.0 Image Builder を作成する

指定のImage Builderが見つからない

Base-Image-Builder-mm-dd-yyyy(mm-dd-yyyy は最新の日付)という名前のImage Builderを選択とありますが、そのようなImage Builderが見つけられませんでした。Descriptionの表記が同じだったので、AppStream-WinServer2019-03-18-2020を選択しました。

ステップ 4: Image Builder に接続し、アプリケーションをインストールする

特に躓いた点はありませんでした。

ステップ 5: Image Assistant を使用して AppStream 2.0 イメージを作成する

CONFIGURE APPSというタブがある

ガイドではImage Assistantコンソールで表示されるタブは「1.ADD APPS」から「5.REVIEW」までの5つです。 ですがやってみると、「2.CONFIGURE APPS」というタブが増えていて計6タブになっています。「2.CONFIGURE APPS」では何を設定すればよいのか。

→ 何もする必要はありません。「2.CONFIGURE APPS」は何も触らず「Next」クリックで良いです。

ステップ 6: フリートをプロビジョンする

「Idle disconnect timeout in minutes」というガイドにない設定項目がある

ガイドが作成されたのが2018年で、この「Idle disconnect timeout in minutes」という設定項目は2019年5月にリリースされた機能のようです。 ユーザーがストリーミングセッションから切断されるまでにアイドル状態 (非アクティブ) であることができる時間の設定です。デフォルト値のままでOKです。

ステップ 7: AppStream 2.0 スタックとストリーミングURL を作成する

「Step 3: User Settings」というフォームがある

すべてデフォルトの設定でOKです。

ステップ 8: AppStream 2.0 ユーザープールを使用してユーザーアクセスを管理する

(Gmail)メールが届かない / 届いたメールにリンクがない

私はGmailアドレスをユーザーアドレスに設定したのですが、迷惑メールフォルダに届いていました。また、迷惑メールフォルダ内にあると、メール文中のリンクは無効化されるようです。「迷惑メールでないことを報告」をクリックして迷惑メールフォルダ外にメールを移動させるとリンクがクリックできるようになります。

以上です。今後私と同じ様にこの入門ガイドをやってみる方の一助になれば幸いです。