

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 架構概觀
<a name="architecture-overview"></a>

本節提供使用此解決方案部署之元件的參考實作架構圖。

## 架構圖
<a name="architecture-diagram"></a>

使用預設參數部署此解決方案會在 AWS 雲端中建置下列環境。

 **AWS 架構上的工作負載探索** 

![工作負載探索封存圖表](http://docs.aws.amazon.com/zh_tw/solutions/latest/workload-discovery-on-aws/images/workload-discovery-arch-diagram.png)


使用 AWS CloudFormation 範本部署之解決方案元件的高階程序流程如下：

1.  [HTTP Strict-Transport-Security (HSTS)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security) 會將安全標頭新增至來自 [Amazon CloudFront](https://aws.amazon.com/cloudfront/) 分發的每個回應。

1. [Amazon Simple Storage Service](https://aws.amazon.com/s3/) (Amazon S3) 儲存貯體託管與 Amazon CloudFront 一起分佈的 Web UI。[Amazon Cognito](https://aws.amazon.com/cognito/) 會驗證使用者對 Web UI 的存取。

1.  [AWS WAF](https://aws.amazon.com/waf/) 可保護 AppSync API，避免可能影響可用性、危及安全性或消耗過多資源的常見漏洞和機器人。

1.  [AWS AppSync](https://aws.amazon.com/appsync/) 端點允許 Web UI 元件請求資源關係資料、查詢成本、匯入新的 AWS 區域和更新偏好設定。AWS AppSync 也允許探索元件將持久性資料存放在解決方案的資料庫中。

1. AWS AppSync 使用 Amazon Cognito 佈建的 [JSON Web Token](https://datatracker.ietf.org/doc/html/rfc7519) (JWTs) 來驗證每個請求。

1. `Settings` [AWS Lambda](https://aws.amazon.com/lambda/) 函數會保留匯入至 [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 成本和用量報告](https://docs.aws.amazon.com/cur/latest/userguide/what-is-cur.html) (AWS CUR)，以提供預估的成本資料給 Web 使用者介面。

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 開發套件](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/index.html)呼叫可協助探索元件維護匯入區域的資源資料庫存，然後將其結果存放在資料元件中。

1. AWS Fargate 任務會將 AWS Config 和 AWS 開發套件呼叫的結果保留在 Amazon Neptune 資料庫和 Amazon OpenSearch Service 網域中，並搭配對 AppSync API 的 API 呼叫。