Amazon AppStream 2.0 のお試し構築・設定

#Amazon AppStream 2.0 のお試し構築

テレワークのツールとして、Amazon Workspaces が注目されている昨今、WorkSpacesは各所で構築情報がありますがAppStream 2.0 は構築事例や作ってみた系の記事がないので、検証してみました。<br>

##AppStream2.0とは？
[Amazon Appstream2.0](https://aws.amazon.com/jp/appstream2/)

> 完全マネージド型のアプリケーションストリーミングサービスです。
> デスクトップアプリケーションを AppStream 2.0 で集中管理し、任意のコンピュータのブラウザへ安全に配信できます。

ようするにアプリケーションの配信(Workspacesを特定アプリにだけアクセスできるよう制限したような形で利用)できるサービスです。
Workspacesはユーザがアプリ以外のデスクトップアイコンやOSの各種設定画面にまでアクセス出来てしまいますがAppStreamだとアプリへのアクセスだけに限定できます。

##利用イメージ
![AppStream_利用イメージ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/05a3ca8d-e667-8169-2bda-38d2434d5000.png)

ユーザがアクセスすると特定のアプリを選択して利用する（図だとsofficeの１つですが...）
![アプリ利用イメージ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/5e7cd693-abcd-886f-b870-2530a3b255f5.png)

#構築手順

* 1&nbsp;Imagesの作成
* 2&nbsp;Fleetの作成
* 3&nbsp;Stackの作成
* 4&nbsp;ユーザの作成、登録

&nbsp;&nbsp;&nbsp;Stackとは・・・ユーザが利用する全体環境の設定
　　　　　　　　Storageはどのサービスを使うか、クリップボード機能のON/OFF
　　　　　　　　どのFleetに関連付けるか、ユーザがアクセスしたときの画面の設定

&nbsp;&nbsp;&nbsp;Fleetとは・・・インスタンスの実行環境の設定
　　　　　　　　どのVPCにデプロイするか、セキュリティグループはどれを利用するか
　　　　　　　　どのインスタンスタイプを利用するか

&nbsp;&nbsp;&nbsp;Imagesとは・・・配信するアプリケーションのスナップショット



普通ならStack →　Fleet　→Images　と作成するかと思いきや逆の流れで作成していきます。
　※詳細は後述

#実際にやってみた
まずImagesを作っていきます。
![Images.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/3fd17dbb-fcc1-2c85-3ed2-785c2fa2a23e.png)

今回はユーザ独自のImageを作りますのでImageBuilderを選択します。
![Images_builder.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/1eb3613b-1e1b-4d19-c51f-bfdd8f045025.png)


次に利用するインスタンスのタイプを選択します。今回は特に処理能力の高いインスタンスは必要ないので一般的なWindows Server OSを選択します。
![Images_instancetype.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/c92c1423-34e2-7899-c76a-b1f70e9760d2.png)

Imageの名前とTag(必要に応じて）、CPU/メモリタイプを選択
![Images_instancetype-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/cf91022b-9db1-9e66-1368-6b35bbb604e9.png)

デプロイするVPC、セキュリティグループ、サブネットを選択
![vpc_sabnet.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/da496e5e-787d-e759-9873-e42f2a98208c.png)
Default Internet Accessにチェックを入れてください。チェックを入れてないと、後の工程でインターネット越しにアプリのインストールが出来なくなります。

Imagesが出来上がりました。
![Images_デプロイ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/e1a1ff3a-6412-0d20-a8f3-ebf5d8e0de66.png)
Status がPendingからRunningに変わるまで15分程度かかります。

続いて、作成したImageにアクセスして、アプリの配信設定をしていきます。
StatusがRunningになった後にImageを選択して、[Connect]を選択すると、ブラウザーでアクセスできます。

ログインする際にはユーザはAdministrator でログインしてください
![Images_ログイン画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/14feb9ca-7294-6628-6d91-9a6a0fe5b43c.png)

ログインすると以下画面になります。
![Images_初期ログイン.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/8e94c986-237e-8d1e-116f-b74f8c449ba0.png)

デスクトップ上のImage Assistant とアイコンをクリック
「＋Add App」をクリックして、配信するアプリを登録していきます

![Images_add.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/9736cc72-5928-0c0e-f972-3d774d707610.png)

今回はインターネット経由でインストールしたLibre Office を配信する設定を行います。
![Images_add_app.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/46439ae6-0888-c507-2262-c693710f5705.png)
Name にアプリ名を入力し、アプリ(exeファイル)の場所をLaunch Path に入力します。
その他の項目は空欄もしくはデフォルトのままでOKです。

ユーザからアクセスした際に表示されるアプリのアイコンですが、デフォルトだとAppstreamno
のアイコンになるので、必要に応じて、Icon Pathを変更してください。

設定したアプリが登録されていることが確認できます。
![Images_add_OK.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/b98cb7ce-376b-cc50-95e9-2a9b47bb55a0.png)

「Next」をクリックすると以下のような画面になります。
ユーザを切替えて、アプリのセッティングをしなさいという旨の指示がありますので必要に応じで設定をしてください。
![Images_swtichuser.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/7230f64f-eaa3-0caa-1c17-c8f2de2ccffb.png)

今回は特にないですが念のためSwitch user でTest user にスイッチして確認します。
![Images_switchuser.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/8c6709c1-5e34-dff7-bbf0-0850c066f060.png)

ImageBuilderTest というユーザでログインしており、デスクトップ上にLibre Office があることが確認できました。

再度Switch User でAdministrator にログインし直してください。
次の「TEST」フェーズも特に今回は設定はないので、割愛します。

次の「Optimize」で「Lanch」をクリックします。
![Images_optimaiz.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/777f3d8d-83cc-c848-e1f0-330bba8a4a31.png)

次の「Configure Images」と「Review」も特に設定することはないため、必要情報を入力してImagesの設定完了まで進めてください。
完了するとImagesのStatusがSnapshottingになりますので、Runningになるまで待ちます。


続いてFleetの設定をしていきます。
Fleetの画面で「Create Fleet」を選択します。
![Images_createFleet.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/015540c2-5037-45c9-5ca6-38bf3a82b7b8.png)

Images を選択する画面が表示されますので、先ほど作成したImagesを選択します。
![Images_choseImages.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/6b9b9de9-eb06-479d-3cfb-95012fcf0b7b.png)

続いてFleetの環境設定をしていきますが基本的にはデフォルトの設定のままで進めます。
![Images_Fleet conf.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/87e2601a-8a99-4011-7c2d-d9104e46fb2e.png)

![Images_Fleet-conf2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/fecbb09f-7432-11c0-7406-bb42510e782b.png)

Fleet Type ですが「On-Demand」と「Always-On」があります。
ちがいは以下です。
使うときだけ起動させて利用する＝「On-Demand」＝利用開始までの時間がかかる
常時起動させておく＝「Always-On」＝すぐに利用開始できる

当然どちらのタイプかで料金が変わってきますので、試験環境ではあまり料金のかからない「On-Demand」を選択しています。

次にVPCやサブネット、適用するセキュリティグループを選択します。
![Images_vpc.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/9c34c7a0-08cb-2993-5aa6-9abbdbc2c691.png)

これでFleetの設定も完了です。
最後のStackを設定していきます。
Name、Display Nameは任意の名称を設定して、Fleetは先ほど設定したFleetを選択します。
![Images_stack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/8863e8b0-bb83-99ff-43bb-950a2839eb3e.png)
Redirect URLやFeedback　URLは空欄のままでもOKです。

続いて、アプリ内のデータを格納するストレージをどうするかを設定していきます。
デフォルトはAmazon　S3なので、問題なければこのままでOKです。
S3バケットも自動的に作成されます。
一応OneDriveやGoogleDriveも設定することができます。
![Images_storage.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/1ab11825-fb94-67b5-d168-34c23f92f24e.png)

次のユーザ環境の設定をしていきます。
まずクリップボードを使えるようにするか、どうかを設定します。
今回はコピーも張り付けも利用できるように設定しました。
![Images_user-setting.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/49097b29-6f0b-37e4-d0fe-3e7bf08e64f5.png)

次にユーザがデータをアップロード、ダウンロードできるようにするかを設定します。
![Images_user-setting2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/0c301d13-dfba-d84d-48f7-de5e23ad4b20.png)

これでStackも設定完了です。
残りはユーザの登録だけです。

User Poolで「Create User」でAppStream を利用させたいユーザを登録していきます。
登録できたらAssign Stack でユーザとStackを紐づけしていきます。


![Images_user.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/9b60483c-a28e-25db-bcce-8f6c297fd1d9.png)

ユーザを紐づけする画面で、ユーザに対して通知メールを送信することができます。
![Images_ユーザ招待.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/3d19c7ea-26f1-0148-cc6d-a3470916c246.png)

ユーザに通知されるメールは以下のような文面です。
![Images_ユーザログイン.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/209f06ed-4ef4-e1f0-3a7a-ab191755d8a8.png)

ユーザログイン画面にアクセスして、メールアドレスとPWを入力すると
配信設定したLibreOffice（表示名：soffice）が選択できます。
![Images_ログイン画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/f4dbebd1-b268-80b6-fd48-09308c7a4085.png)

![Images_あぷり選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/cdea8242-4c33-fc13-dd18-d1d99ee087eb.png)

これでアプリ配信ができることが確認できました！

今回はユーザをStackにアサインして、ユーザメールアドレスとPWで認証する方式でしたが
Stackのところで「Creat Streaming URL」で誰でもアクセスできるURLを発行しておくことも可能です。
URLには有効期間を設定して、期間限定で公開するということもできます。
![Images_URL.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/41f03217-017a-dc51-0491-ea8e4f8fc7dc.png)

![Images_URL2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/b2401f62-07ff-ceb9-cdb8-6ee13cd9677f.png)

#最後に
WorkSpacesと比べてマイナー感がありますが、特定の業務アプリだけ利用したいという場合は
非常に便利だと思います。
今回はWebブラウザー経由でアクセスして、検証していましたがWorkSpaces同様に専用クライアントアプリもあるので、アプリ配信限定のWorkSpacesという位置づけでの利用もできそうな気がします。