【AWS SAP】AppStream 2.0とは

# AWS AppStream 2.0の概要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746730/850c2a32-e1a2-c15b-eabd-b7531fc2df2b.png)

AWS AppStream 2.0は、クラウド上でアプリケーションをストリーミング配信するサービスです。エンドユーザーは、デスクトップやブラウザを介して高性能なアプリケーションを利用できます。以下のようなユースケースに適しています。

- グラフィックスが要求されるアプリケーション（例: CADツール、3Dモデリング）  
- エンタープライズソフトウェアの安全な提供  
- アプリケーションのプラットフォーム依存性の解消  

## AppStream 2.0の特徴とアーキテクチャ

### ストリーミングアーキテクチャの概要
AppStream 2.0は、AWSクラウド上でアプリケーションを実行し、その結果をストリーミングで配信します。ユーザーはローカルのリソースをほとんど消費せずに、どのデバイスからもアプリケーションにアクセス可能です。

### 主な構成要素
- **ストリーミングインスタンス**: アプリケーションが実行される仮想マシン  
- **フリート**: ストリーミングインスタンスのグループ。スケーリング設定に基づいて管理されます  
- **スタック**: アプリケーションのアクセス設定、ポリシー、ストレージの構成を定義します  

### ネットワーク構成とセキュリティ
- **VPCとサブネット**: AppStream 2.0リソースは、VPC内に配置可能  
- **IAMロール**: AppStream 2.0が他のAWSサービス（例: S3）にアクセスするために必要  
- **セキュリティグループ**: ネットワーク通信の制御に使用  

## AppStream 2.0と他サービスとの比較

| サービス          | 主な特徴                                                      | 主なユースケース                         |
|-------------------|--------------------------------------------------------------|-----------------------------------------|
| **AppStream 2.0** | アプリケーションのストリーミング提供                             | CADツールや特定業務アプリケーション       |
| **Amazon WorkSpaces** | フル仮想デスクトップ環境の提供                                  | 一般的なデスクトップ業務環境              |
| **オンプレVDI**   | ローカルインフラストラクチャを使用                                | 低遅延環境が必須な場合やレガシー環境の維持 |

## よく出題されるトピック

### スケーリングの設計
- **オンデマンドフリート**: ユーザーの要求に応じてインスタンスを起動  
- **常時稼働フリート**: 高速な接続を保証するためにインスタンスを常に実行  
- **オートスケーリング**: フリートサイズを自動的に調整してコストを最適化  

### セキュリティ設定
- **IAMロール**: AppStream 2.0からS3やCloudWatchへのアクセス権を付与  
- **VPCエンドポイント**: ネットワーク通信をAWSインフラ内に制限  

### データストレージ
- **S3との統合**: ユーザーデータを永続化し、別のセッションでもデータにアクセス可能  
- **ホームディレクトリの設定**: 各ユーザーに専用のストレージを割り当て  

## 設計例：AppStream 2.0を用いたアプリケーションストリーミング

### 要件例
- CADツールの提供  
- 同時接続ユーザー数: 100  
- ユーザーごとにデータを永続化する必要あり  

### アーキテクチャ設計フロー図
```plaintext
[ユーザー]
    ↓
[ブラウザ/デバイス]
    ↓
[AppStream 2.0スタック]
    ↓
[フリート (オンデマンド設定)]
    ↓
[S3ストレージ (ユーザーデータ)]
```

## 試験対策のポイントと注意事項

- **スケーリング戦略を理解すること**  
  - フリートの種類とその適切な使用シナリオを把握する  
- **IAMロールとポリシーの設定に注意**  
  - 最小権限の原則を守ることが重要  
- **コスト管理を考慮**  
  - オートスケーリングを利用して無駄なリソース使用を削減する  

## WorkSpacesとの違い
| 項目                 | Amazon AppStream 2.0                              | Amazon WorkSpaces                                 |
|----------------------|--------------------------------------------------|--------------------------------------------------|
| 提供内容             | アプリケーション単位のストリーミング             | 仮想デスクトップ環境（フルOS）                  |
| 主な用途             | 特定アプリケーションの実行・共有                 | フルデスクトップ環境の提供                      |
| 対象ユーザー         | アプリだけを利用する必要がある短期利用者や学生   | 業務用デスクトップが必要な社員や長期利用者     |
| 動作環境             | Webブラウザや軽量クライアントで利用可能          | 専用のクライアントまたはRDPで利用可能          |
| 料金体系             | 利用時間ベース（ストリーミング時間ごとに課金）   | 月額または利用時間ベース（柔軟性あり）          |
| 費用の目安           | **安い**（短期間・特定アプリ利用の場合）         | **高い**（フルデスクトップ環境＋ストレージ含む）|
| 利用例               | CADソフト、データ分析ツール、カスタムWebアプリ   | 企業内仮想デスクトップ、長期のリモートワーク   |
| 利用する場面         | - 研修や教育プログラムで特定アプリを共有したい時  <br>- 短期間で高性能アプリケーションを提供したい時 | - 社員にフルリモートワーク環境を提供したい時  <br>- セキュリティを確保した業務用環境を構築したい時 |

## AppStream 1.0はない！
Amazon AppStream 1.0という名称やサービスは存在せず、最初からAmazon AppStream 2.0がリリースされています。

## AppStream 2.0 でできないこと
1. **フルデスクトップ環境の提供**  
   - 作成事項: AppStream 2.0 はアプリケーション単位のストリーミングに特化しており、WorkSpaces のようにOS全体を提供するサービスではない。
   - 代替案: Amazon WorkSpaces を利用。
　
2. **オフライン利用**  
   - 作成事項: クラウド上でアプリケーションを実行し、ストリーミングする仕組みのため、インターネット接続が必要。
   - 代替案: アプリケーションをローカルにインストール。
　
3. **高度な3Dレンダリング向けの専用GPUサービス**  
   - 作成事項: 超高性能な3Dレンダリングやゲームストリーミングなどの高度なグラフィック処理を提供すること。
   - 代替案: AWS EC2の専用GPUインスタンスを利用。
　
4. **特定のライセンス制約に対応**  
   - 作成事項: 一部のソフトウェアのライセンス要件がクラウドでの利用を禁止している場合がある。
   - 代替案: 適切なクラウドライセンスを取得する。
　
5. **ファイルのローカル保存**  
   - 作成事項: クラウド上のアプリケーションで作成したデータをローカルストレージに直接保存できない。
   - 代替案: S3経由でローカルにダウンロード。
　
6. **一部のオペレーティングシステムや環境**  
   - 作成事項: 特定のOS依存アプリケーションやカスタマイズされたLinux環境をストリーミングすること。
   - 代替案: AWS EC2にカスタム環境を構築。
　
7. **複数のアプリケーションを同時実行**  
   - 作成事項: 一つのセッション内で複数のアプリケーションを同時に使用するのは制限がある。
   - 代替案: 必要に応じて複数のセッションを利用。
　
8. **超短時間利用のコスト効率**  
   - 作成事項: 数分単位の利用ではコスト効率が悪くなる場合がある。
   - 代替案: 必要に応じた利用時間の計画を最適化。

## AppStream 2.0 でできること
1. **アプリケーションのクラウド上の実行とストリーミング**  
   - アプリケーションをローカルPCにインストールせずに実行。
   - 利用者はブラウザやクライアントからストリーミングに接続して利用可能。
　
2. **高性能なアプリケーションの実行**  
   - CADソフト、データ解析ツールなど、高性能を要するアプリケーションの実行を支援。
   - Graphics.g4dn インスタンスを利用することで、グラフィックリソースも専用。
　
3. **アプリケーション利用の簡易化**  
   - IT部門の管理下でユーザーにアプリケーションを提供。
   - アプリケーションのインストールやアップデートがより簡易になる。
　
4. **複数のユーザーへの共有**  
   - 1つのアプリケーションを複数のユーザーに共有可能。
   - 教育機関やトレーニングプログラムで有効。
　
5. **アプリケーションのセキュアリティ向上**  
   - アプリケーションはクラウド上に実行されるため、ローカルパソコンのセキュアリティ要件が低下。
   - 機器総付けを防ぐためのリモートアクセスシナリオに有効。
　
6. **ファイル共有とS3レストリング**  
   - AppStream のセッション内で使用したデータを、ローカルPCやS3と連携して共有。
   - ファイルのアップロードやダウンロードが自由。
　
7. **利用時間基準のコスト計算**  
   - 利用時間に対して資源を配分し、オンデマンド利用に有利。
   - 短期間のアプリケーション利用に有効。
　
8. **代替機器へのログインなしの移行**  
   - 利用者が別のデバイスからログインする事なく、同じアプリケーションを完全に利用可能。
   - 利用者のアクセスが構成により非常に簡易。