

# アーキテクチャの概要
<a name="architecture"></a>

このセクションでは、このソリューションでデプロイされるコンポーネントのリファレンス実装のアーキテクチャ図を示します。

## アーキテクチャ図
<a name="architecture-diagram"></a>

このソリューションをデフォルトのパラメータを使用してデプロイすると、AWS アカウントに次のコンポーネントがデプロイされます。

**注記**  
このソリューションには、WorkSpaces を管理し、一元管理レポートを提供するためのセントラルアカウントの\$1ハブアカウントテンプレート \$1(最初にデプロイされるもの)、およびモニタリングする各 WorkSpace アカウントの\$1スポークアカウントテンプレート \$1(2 番目にデプロイされるもの) の両方が含まれます。このソリューションは、ディレクトリごとのレポートと、すべてのディレクトリを組み合わせた WorkSpaces に関する情報を含む集約レポートを作成します。

 **Amazon WorkSpaces のコストオプティマイザーのアーキテクチャ** 

![\[WorkSpaces のコストオプティマイザーのアーキテクチャ\]](http://docs.aws.amazon.com/ja_jp/solutions/latest/cost-optimizer-for-workspaces/images/workspaces-cost-optimizer-architecture.png)


1. スポークテンプレートは、[AWS Lambda](https://aws.amazon.com/lambda/) 関数を呼び出して、ハブアカウントの [Amazon DynamoDB](https://aws.amazon.com/dynamodb) テーブルにスポークアカウントとしてアカウントを登録する[カスタムリソース](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources.html)を作成します。

1. ハブテンプレートは、24 時間ごとに [Amazon ECS](https://aws.amazon.com/ecs/) タスクを呼び出す [Amazon EventBridge](https://aws.amazon.com/eventbridge/) ルールを作成します。

1. Amazon ECS タスクは、WorkSpaces を管理するために、各スポークアカウントの [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/) ロールを引き受けます。

1. Amazon ECS タスクは [AWS Directory Service](https://aws.amazon.com/directoryservice/) をポーリングして、特定の AWS リージョンで Amazon WorkSpaces に登録されているすべてのディレクトリのリストを収集します。次に、このタスクは時間単位の請求モデルにある各 WorkSpace の合計使用量を確認します。WorkSpace が月間使用量のしきい値に達した場合、ソリューションは個々の WorkSpace を月単位の請求に変更します。
**注記**  
WorkSpace が月単位の請求で開始される場合、またはソリューションが WorkSpace を時間単位から月単位の請求に変更する場合に、使用量がしきい値を下回っていたら、ソリューションは翌月の初めまで WorkSpace を時間単位の請求に変更しません。ただし、ユーザーは Amazon WorkSpaces コンソールを使用して、いつでも請求モデルを手動で変更できます。また、WorkSpace ごとに時間単位から月単位の請求に変更する際にも、しきい値を変更できます。詳細については、「[自動的な請求の変更](features-and-benefits.md#automatic-billing-conversion)」を参照してください。

このソリューションには、推奨されている変更がコストにどのように影響するかを把握できる Dry run mode (デフォルトでアクティブ) も含まれています。詳細については、[Dry run mode](features-and-benefits.md#dry-run-mode) を参照してください。

\$1

月末に、Amazon ECS タスクは月単位の請求モデルにある各 Workspace の合計使用量を確認します。WorkSpace が月間使用量のしきい値に達していない場合、このソリューションは翌月の初めに個々の WorkSpace を月単位の請求から時間単位の請求に変更します。Amazon ECS タスクは、実行結果を DynamoDB 使用状況テーブル、セッションテーブルに書き込み、[Amazon Simple Cloud Storage (Amazon S3)](https://aws.amazon.com/s3/) バケットにアップロードします。

**注記**  
Amazon S3 バケットを頻繁にチェックして、オプティマイザーのアクティビティを追跡し、エラーメッセージを含むログを確認してください。

# AWS Well-Architected デザインフレームワーク
<a name="aws-well-architected-design"></a>

このソリューションは、AWS Well-Architected フレームワークのベストプラクティスを使用して設計されています。そのため、ユーザーは信頼性、セキュリティ、効率性、およびコスト効果の高いクラウドワークロードを設計し運用することができます。

このセクションでは、Well-Architected フレームワークの設計原則とベストプラクティスが、このソリューションの構築にどのように適用されているかについて説明します。

 **オペレーショナルエクセレンス** 

このセクションでは、[オペレーショナルエクセレンスの柱](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/welcome.html)に関する原則とベストプラクティスが、このソリューションの設計にどのように適用されているかについて説明します。
+ このソリューションは、メトリクスを [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) にプッシュして、インフラストラクチャ、AWS Lambda 関数、Amazon S3 バケット、その他のソリューションコンポーネントにオブザーバビリティを提供します。
+ このソリューションは、アプリケーションプログラミングインターフェイス (API) の失敗により WorkSpace がスキップされたかどうかを示すために、日次レポートを更新します。
+ このソリューションは、新しい WorkSpace ワークロードがアカウントに追加される際に、スポークアカウントを段階的にオンボーディングする手段を備えています。

 **セキュリティ** 

このセクションでは、[セキュリティの柱](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/welcome.html)に関する原則とベストプラクティスが、このソリューションの設計にどのように適用されているかについて説明します。
+ すべてのサービス間通信は、IAM ロールを使用します。
+ すべてのマルチアカウント通信は、IAM ロールを使用します。
+ ソリューションで使用されるすべてのロールは、最小特権アクセスに従います。つまり、サービスが正しく機能するために必要な最小限のアクセス許可のみが含まれます。
+ Amazon S3 バケットや DynamoDB テーブルを含むすべてのデータストレージは、保管時の暗号化を使用します。

 **信頼性** 

このセクションでは、[信頼性の柱](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/welcome.html)に関する原則とベストプラクティスが、このソリューションの設計にどのように適用されているかについて説明します。
+ このソリューションは、サーバーレス AWS サービス (Lambda、Amazon S3、AWS Fargate など) を可能な限り使用して、高可用性を確保し、サービス障害から回復します。
+ データ処理では Lambda 関数を使用します。このソリューションは DynamoDB と Amazon S3 にデータを保存するため、デフォルトで複数のアベイラビリティーゾーンに保持されます。

 **パフォーマンス効率** 

このセクションでは、[パフォーマンス効率の柱](https://docs.aws.amazon.com/wellarchitected/latest/performance-efficiency-pillar/welcome.html)に関する原則とベストプラクティスが、このソリューションの設計にどのように適用されているかについて説明します。
+ すべてのサービス間通信は、IAM ロールを使用します。
+ このソリューションは、サーバーレス AWS サービス (Lambda、Amazon S3、Fargate など) を可能な限り使用します。
+ このソリューションは、AWS Lambda や Amazon S3 など、このソリューションで使用する AWS のサービスをサポートする任意の AWS リージョンを起動する機能を提供します。
+ このソリューションは、毎日自動的にテストおよびデプロイされます。このソリューションは、ソリューションアーキテクトと対象分野の専門家によって、実験と改善の分野についてのレビューが行われます。

 **コスト最適化** 

このセクションでは、[コスト最適化の柱](https://docs.aws.amazon.com/wellarchitected/latest/cost-optimization-pillar/welcome.html)に関する原則とベストプラクティスが、このソリューションの設計にどのように適用されているかについて説明します。
+ このソリューションはサーバーレスアーキテクチャを使用し、ユーザーへの請求は使用した分に対してのみ行われます。
+ このソリューションは、ストレージコストを削減するために、Amazon S3 バケットのライフサイクルポリシーを使用して 1 年後にオブジェクトを削除します。
+ このソリューションは未使用の WorkSpaces を終了する機能を備えており、オペレーションワークロードを削減することでコストの削減に役立ちます。

 **持続可能性** 

このセクションでは、[持続可能性の柱](https://docs.aws.amazon.com/wellarchitected/latest/sustainability-pillar/sustainability-pillar.html)に関する原則とベストプラクティスが、このソリューションの設計にどのように適用されているかについて説明します。
+ このソリューションは、マネージドサービスとサーバーレスサービスを使用して、バックエンドサービスの環境への影響を最小限に抑えます。
+ このソリューションのサーバーレス設計は、オンプレミスサーバーを継続的に運用する場合のフットプリントと比較して、カーボンフットプリントを低減することを目的としています。
+ このソリューションは、未使用の WorkSpaces を終了して、カーボンフットプリントをさらに最小限に抑える機能を備えています。

# AWS Organizations のサポート
<a name="aws-organizational-support"></a>

このソリューションは、ハブアンドスポークアーキテクチャを通じて AWS Organizations をサポートします。組織内の複数のアカウントをまたいで WorkSpaces をモニタリングするには、Organization の管理アカウントで [AWS Resource Access Manager](https://aws.amazon.com/ram/) (AWS RAM) への信頼されたアクセスを許可します。RAM への信頼されたアクセスを許可する方法の詳細については、「[AWS Resource Access Manager and AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/services-that-can-integrate-ram.html)」を参照してください。

ユーザーは、ハブテンプレートをセントラルアカウントにデプロイし、WorkSpaces を管理する各アカウントにスポークテンプレートをデプロイできます。スポークスタックは、ハブスタックと同じリージョンにデプロイする必要があります。

マルチアカウントデプロイの場合は、**Organization ID for multi account deployment** と **Account ID of the Management Account for the Organization** の入力パラメータの値を指定します。単一アカウントのデプロイの場合、またはセントラルアカウントでのみ WorkSpaces を管理する場合は、ハブテンプレートのみをデプロイし、**Organization ID for multi account deployment** と **Account ID of the Management Account for the Organization** の入力パラメータの値をデフォルトのままにします。

# このソリューションの AWS のサービス
<a name="aws-services-in-this-solution"></a>

このソリューションには、次の AWS サービスが含まれています。


| AWS のサービス | 説明 | 
| --- | --- | 
|   [Amazon WorkSpaces](https://aws.amazon.com/workspaces/)   |  このソリューションは Amazon WorkSpaces サービスのリソースは作成しませんが、顧客アカウントの既存の WorkSpaces のモニタリングを行います。  | 
|   [Amazon Simple Storage Service](https://aws.amazon.com/s3/)   |  このソリューションは、処理された WorkSpaces の日次レポートと月次レポートを保存する Amazon S3 バケットを作成します。  | 
|   [AWS Organizations](https://aws.amazon.com/organizations/)   |  このソリューションは、特定の組織に属するアカウントの WorkSpaces をモニタリングします。  | 
|   [AWS Lambda](https://aws.amazon.com/lambda/)   |  このソリューションは、スポークアカウントをハブアカウントに登録する Lambda 関数を作成します。  | 
|   [Amazon Elastic Container Service](https://aws.amazon.com/ecs/)   |  このソリューションは、ハブアカウントおよびスポークアカウントの WorkSpaces をモニタリングするために使用される Amazon ECS タスクを作成します。  | 
|   [AWS Directory Service](https://aws.amazon.com/directoryservice/)   |  このソリューションは AWS Directory Service のリソースを作成しませんが、既存ディレクトリの WorkSpaces のモニタリングを行います。  | 
|   [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/)   |  このソリューションは、Amazon ECS タスクのログと Lambda 関数のログを保存するためのロググループを作成します。  | 
|   [AWS Fargate](https://aws.amazon.com/fargate/)   |  このソリューションは、Fargate 起動タイプを使用して Amazon ECS タスクを実行します。  | 
|   [AWS EventBridge](https://aws.amazon.com/eventbridge/)   |  このソリューションは、スケジュールに基づいて Amazon ECS タスクをトリガーする Amazon EventBridge ルールを作成します。  | 
|   [AWS IAM](https://aws.amazon.com/iam/)   |  このソリューションは、ハブアカウントおよびスポークアカウントの WorkSpaces にアクセスするために必要な IAM ロールを作成します。  | 
|   [Amazon DynamoDB](https://aws.amazon.com/dynamodb/)   |  このソリューションは、スポークアカウントの詳細を保存する DyanamoDB テーブルを作成します。  | 
|   [AWS Service Catalog](https://aws.amazon.com/servicecatalog/)   |  このソリューションは、サービスカタログアプリケーションを作成して、CloudFormation スタックをこのアプリケーションに関連付けます。  | 
|   [AWS CloudFormation](https://aws.amazon.com/cloudformation/)   |  このソリューションは、CloudFormation テンプレートを使用して、WorkSpaces のモニタリングに必要なリソースをデプロイします。  | 