

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

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

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

このソリューションをデフォルトのパラメータでデプロイすると、以下に示す環境が AWS クラウドに構築されます。

 **AWS でのワークロード検出のアーキテクチャ** 

![ワークロード検出のアーキテクチャ図](http://docs.aws.amazon.com/ja_jp/solutions/latest/workload-discovery-on-aws/images/workload-discovery-arch-diagram.png)


AWS CloudFormation テンプレートを使用してデプロイされたこのソリューションコンポーネントの大まかなプロセスフローは次のとおりです。

1.  [Amazon CloudFront](https://aws.amazon.com/cloudfront/) ディストリビューションからの各レスポンスに [HTTP Strict-Transport-Security (HSTS)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security) セキュリティヘッダーを追加します。

1. [Amazon Simple Storage Service](https://aws.amazon.com/s3/) (Amazon S3) バケットは、Amazon CloudFront を使用して配信されるウェブ UI をホストします。[Amazon Cognito](https://aws.amazon.com/cognito/) は、ウェブ UI へのユーザーアクセスを認証します。

1.  [AWS WAF](https://aws.amazon.com/waf/) は、可用性に影響を与えたり、セキュリティを侵害したり、リソースを過剰に消費したりする可能性のある一般的なエクスプロイトやボットから AppSync API を保護します。

1.  [AWS AppSync](https://aws.amazon.com/appsync/) エンドポイントは、ウェブ UI コンポーネントがリソース関係データをリクエストしたり、コストをクエリしたり、新しい AWS リージョンをインポートしたり、環境設定を更新したりすることを可能にします。また、AWS AppSync は検出コンポーネントがこのソリューションのデータベースに永続的なデータを保存できるようにします。

1. AWS AppSync は、Amazon Cognito によってプロビジョニングされる [JSON ウェブトークン](https://datatracker.ietf.org/doc/html/rfc7519) (JWT) を使用して、各リクエストを認証します。

1. `Settings` [AWS Lambda](https://aws.amazon.com/lambda/) 関数は、インポートされた AWS リージョンとその他の設定を [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) に保持します。

1. [AWS Amplify](https://aws.amazon.com/amplify/) と Amazon S3 バケットは、ユーザープリファレンスと保存されたアーキテクチャ図を保持するストレージ管理コンポーネント用にデプロイされます。

1. データコンポーネントは、`Gremlin Resolver` AWS Lambda 関数を使用して [Amazon Neptune](https://aws.amazon.com/neptune/) データベースからデータをクエリして返します。

1. データコンポーネントは、`Search Resolver` Lambda 関数を使用して、[Amazon OpenSearch Service](https://aws.amazon.com/opensearch-service/) ドメインに対するリソースデータのクエリと保存を行います。

1. `Cost` Lambda 関数は、[Amazon Athena](https://aws.amazon.com/athena) を使用して、[AWS Cost and Usage Report](https://docs.aws.amazon.com/cur/latest/userguide/what-is-cur.html) (AWS CUR) をクエリして、予想コストデータをウェブ UI に提供します。

1. Amazon Athena は AWS CUR 上でクエリを実行します。

1. AWS CUR は、レポートを `CostAndUsageReportBucket` Amazon S3 バケットに配信します。

1. `Cost` Lambda 関数は、Amazon Athena の結果を `AthenaResultsBucket` Amazon S3 バケットに保存します。

1.  [AWS CodeBuild](https://aws.amazon.com/codebuild) は、イメージデプロイコンポーネントで検出コンポーネントのコンテナイメージを作成します。

1.  [Amazon Elastic Container Registry](https://aws.amazon.com/ecr/) (Amazon ECR) は、イメージデプロイコンポーネントによって提供される [Docker イメージ](https://docs.docker.com/engine/reference/commandline/images/)を保存します。

1.  [Amazon Elastic Container Service](https://aws.amazon.com/ecs) (Amazon ECS) は、[AWS Fargate](https://aws.amazon.com/fargate/) タスクを管理し、必要な構成を提供して、タスクを実行します。AWS Fargate は 15 分ごとにコンテナタスクを実行し、インベントリとリソースデータを更新します。

1.  [AWS Config](https://aws.amazon.com/config) と [AWS SDK](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/index.html) の呼び出しは、検出コンポーネントがインポートされた AWS リージョンからのリソースデータのインベントリを更新してから、その結果をデータコンポーネントに保存します。

1. AWS Fargate タスクは、AWS Config と AWS SDK の呼び出しの結果を、AppSync API への API コールを介して、Amazon Neptune データベースと Amazon OpenSearch Service ドメインに保存します。