

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

# 資料生命週期


若要建置資料管道，您必須先從外部或內部資料來源將資料擷取至 AWS，例如檔案伺服器、資料庫、儲存貯體或 API 呼叫。擷取的資料可能會也可能不會經歷轉換，例如匿名化、資料欄捨棄或資料清理。

本節提供資料生命週期程序中階段的概觀，如下圖所示。

![\[資料生命週期概觀圖\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/modern-data-centric-use-cases/images/data_lifecycle_overview.png)


這些階段包括下列項目：
+ 資料收集
+ 資料準備和清理
+ 資料品質檢查
+ 資料視覺化和分析
+ 監控與除錯
+ IaC 部署
+ 自動化和存取控制

# 資料收集


您可以從 AWS 內的各種來源收集資料，但請務必為您的使用案例選擇正確的資料收集工具。下圖顯示資料收集階段如何符合資料工程自動化和存取控制生命週期。

![\[資料收集圖表\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/modern-data-centric-use-cases/images/data_collection.png)


AWS 提供下列資料收集工具：
+ [Amazon Kinesis](https://aws.amazon.com/kinesis/) 可協助您收集串流資料。Kinesis 也提供無縫整合和處理功能。
+ [AWS Database Migration Service (AWS DMS)](https://aws.amazon.com/dms/) 可協助您從關聯式資料庫擷取資料。AWS DMS 具有在 AWS 上託管的現場部署和資料庫服務之間的組態選項和直接連線，例如 Amazon Simple Storage Service (Amazon S3)。
+ [AWS Glue](https://aws.amazon.com/glue/) 是一種擷取、轉換和載入 (ETL) 工具，可協助您擷取非結構化資料。

使用 Amazon S3 進行儲存，收集非結構化或半結構化資料有數種使用案例。例如，製造站點的資料收集使用案例可能需要以 XML 檔案擷取機器歷史記錄資料的歷史資料、以 JSON 檔案擷取事件資料，以及從關聯式資料庫購買資料。此使用案例也可能要求必須聯結所有三個資料來源。

在開始資料擷取程序之前，建議您了解必須擷取哪些資料，然後選擇正確的工具來收集此資料。

# 資料準備和清理


資料準備和清理是資料生命週期中最重要且最耗時的階段之一。下圖顯示資料準備和清理階段如何符合資料工程自動化和存取控制生命週期。

![\[資料準備和清理圖表\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/modern-data-centric-use-cases/images/data_prep_cleaning.png)


以下是一些資料準備或清理的範例：
+ 將文字資料欄映射至程式碼
+ 忽略空白資料欄
+ 使用 `0`、 `None`或 填入空白資料欄位 `''`
+ 匿名化或遮罩個人身分識別資訊 (PII)

如果您有具有各種資料的大型工作負載，建議您使用 [Amazon EMR](https://aws.amazon.com/emr/) 或 [AWS Glue](https://aws.amazon.com/glue/) 進行資料準備和清理任務。Amazon EMR 和 AWS Glue 都使用非結構化、半結構化和關聯式資料，而且兩者都可以使用 Apache Spark 建立 `DataFrame`或 `DynamicFrame` 來處理水平處理。此外，您可以使用 [AWS Glue DataBrew](https://aws.amazon.com/glue/features/databrew/) 以無程式碼方法清理和處理資料。此外，DataBrew 可以使用資料欄統計資料來分析資料集、提供資料歷程，以及包含所有或指定資料欄的資料品質規則。

對於不需要分散式處理且可在 15 分鐘內完成的較小工作負載，我們建議您使用 [AWS Lambda](https://aws.amazon.com/lambda/) 進行資料準備和清理。Lambda 是小型工作負載經濟實惠且輕量型的選項。對於無法進入雲端的高度安全資料，我們建議您使用 [AWS Outposts](https://aws.amazon.com/outposts/) 伺服器在 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上執行資料匿名化。

為資料準備和清理選擇正確的 AWS 服務，以及了解與您選擇相關的權衡至關重要。例如，假設您是從 AWS Glue、DataBrew 和 Amazon EMR 中選擇的案例。如果 ETL 任務不常執行，則 AWS Glue 是理想的選擇。不常發生的任務每天執行一次、每週執行一次，或每月執行一次。您可以進一步假設資料工程師熟練撰寫 Spark 程式碼 （適用於大數據使用案例） 或一般編寫指令碼。如果任務更頻繁，持續執行 AWS Glue 可能會變得昂貴。在這種情況下，Amazon EMR 提供分散式處理功能，並提供無伺服器和伺服器型版本。如果您的資料工程師沒有適當的技能或您必須快速交付結果，則 DataBrew 是不錯的選擇。DataBrew 可以減少開發程式碼的工作量，並加速資料準備和清理程序。

處理完成後，ETL 程序的資料會存放在 AWS 上。儲存體的選擇取決於您正在處理的資料類型。例如，您可以處理非關聯式資料，例如圖形資料、鍵值對資料、影像、文字檔案或關聯式結構化資料。

如下圖所示，您可以使用下列 AWS 服務進行資料儲存：
+ [Amazon S3](https://aws.amazon.com/s3/) 存放非結構化資料或半結構化資料 （例如 Apache Parquet 檔案、映像和影片）。
+ [Amazon Neptune](https://aws.amazon.com/neptune/) 存放圖形資料集，您可以使用 SPARQL 或 GREMLIN 查詢。
+ [Amazon Keyspaces （適用於 Apache Cassandra)](https://aws.amazon.com/keyspaces/) 存放與 Apache Cassandra 相容的資料集。
+ [Amazon Aurora](https://aws.amazon.com/rds/aurora/) 會存放關聯式資料集。
+ [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) 會將索引鍵值或文件資料存放在 NoSQL 資料庫中。
+ [Amazon Redshift](https://aws.amazon.com/redshift/) 會將結構化資料的工作負載存放在資料倉儲中。



![\[資料儲存服務。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/modern-data-centric-use-cases/images/data_prep_cleaning_storage_1.png)


透過使用正確的服務搭配正確的組態，您可以以最有效率且最有效的方式存放資料。這可將資料擷取所涉及的工作量降至最低。

# 資料品質檢查


資料品質是資料清理過程中不可或缺但經常被忽略的部分。下圖顯示資料品質檢查如何符合資料工程自動化和存取控制生命週期。

![\[資料品質圖表\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/modern-data-centric-use-cases/images/data_quality_checks.png)


下表根據使用案例提供不同資料品質解決方案的概觀。


|  |  |  | 
| --- |--- |--- |
| **使用案例** | **解決方案** | **範例** | 
| 新增資料欄層級或資料表層級品質條件的無程式碼解決方案 | [AWS Glue DataBrew](https://aws.amazon.com/glue/features/databrew/) | 檢查所有資料欄值是否介於 1 到 12 之間，或資料表或資料欄是否為空 | 
| 新增至 AWS Glue 任務或無程式碼解決方案 （預覽） 的自訂程式碼，以新增資料欄層級或資料表層級的品質條件 | [AWS Glue 資料品質](https://docs.aws.amazon.com/glue/latest/dg/glue-data-quality.html) | 檢查資料欄是否`first_name`不是 null，或資料欄是否只`phone_number`包含數字或 "\$1" 運算子和/或統計函數，例如平均值或總和 | 
| 自訂檢查 | 選擇的 ETL，例如 [AWS Lambda](https://aws.amazon.com/lambda/)、[AWS Glue](https://aws.amazon.com/glue/) 或 [Amazon EMR](https://aws.amazon.com/emr/) | 檢查欄 A 的值是否一律大於欄 B 和欄 C 的對應值，或欄的值是否一律`continent`在地理上正確且衍生自`city`欄 | 
| 具有指標報告、限制驗證和限制建議的複雜解決方案 | [Deequ](https://aws.amazon.com/blogs/big-data/test-data-quality-at-scale-with-deequ/) | 檢查資料欄指標的`CompletenessConstraint`完整性是否`review_id`等於 `1` | 

# 資料視覺化和分析


完成資料品質檢查後，您可以移至資料分析或視覺化階段，如下圖所示。

![\[資料視覺化圖表\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/modern-data-centric-use-cases/images/data_visualization_analysis.png)


在此階段中，您可以使用 [Quick Sight](https://aws.amazon.com/quicksight/) 建立圖形或圖表、使用 [Neptune](https://aws.amazon.com/neptune/) 進行圖形資料庫操作和視覺化，或使用 [OpenSearch](https://aws.amazon.com/what-is/opensearch/) 進行開放原始碼搜尋和分析。一般而言，您也可以使用 Amazon SageMaker 管道或 Amazon S3 的簡單讀取，將乾淨的資料饋送至資料科學或機器學習 (ML) 工作流程。資料視覺化和分析階段會結束資料工程管道的循序部分。

# 監控與除錯


資料生命週期中的某些階段不是循序的，而是持續存在。這適用於監控和偵錯階段，如下圖所示。

![\[監控和偵錯圖表\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/modern-data-centric-use-cases/images/monitoring_debugging.png)


必須持續監控資料工程程序的正確性和效能。[Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) 在監控資料工程方面扮演重要角色，因為它會將每個錯誤和資訊日誌記錄到其日誌群組。您可以使用監控來建置自動錯誤復原。例如，如果您發現資料品質規則不滿意，您可以停止管道，也可以單獨記錄成功執行和失敗執行，以啟用復原動作。監控可改善資料工程程序 （即完整 ETL 程序） 和資料的整體可靠性。

此外，我們建議您建立 CloudWatch 儀表板，其中包含監控和偵錯程序的相關指標。這有助於確保資料工程程序如預期般順暢地執行。這對操作和報告很重要。例如，CloudWatch 儀表板可以向使用者顯示載入狀態，以協助他們了解程序的可靠性，或由於低品質或哪些來源具有最大故障而捨棄的資料百分比。CloudWatch 儀表板不僅可協助您視覺化結果，還可以透過識別 ETL 程序中的困擾點來改善程序。

# IaC 部署


如果沒有基礎設施即程式碼 (IaC) 部署的機制，現代架構便不完整。下圖顯示與 IaC 部署相關的 AWS 服務。

![\[IaC 部署圖表\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/modern-data-centric-use-cases/images/iac_deployment.png)


我們建議任何部署的基礎設施一律由使用 IaC 工具的程式碼支援。例如，您可以使用 [AWS CloudFormation](https://aws.amazon.com/cloudformation/) 或 [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)。AWS CDK 是 CloudFormation 的包裝函式。

最佳實務是，建議您將程式碼推送到您選擇的程式碼儲存庫。最佳實務是在您的程式碼儲存庫中使用來源控制，以便您具有版本控制和協同合作功能，讓多個團隊成員能夠在相同的程式碼基礎上同時運作，同時確保來自不同開發人員的程式碼整合到主要分支不會造成任何衝突。

# 自動化和存取控制


##  自動化


管道自動化是現代以資料為中心的架構設計的重要部分。若要成功執行您的生產系統，建議您擁有具有啟動觸發、連線步驟的資料管道，以及用於分隔失敗和傳遞階段的機制。記錄失敗同時不阻礙 ETL 程序的其餘部分也很重要。

您可以使用 [AWS Glue 工作流程](https://docs.aws.amazon.com/glue/latest/dg/workflows_overview.html)來建立管道。管道支援所有 AWS Glue 任務、Amazon EventBridge 觸發條件和爬蟲程式。您也可以從頭或使用 AWS Glue [藍圖](https://docs.aws.amazon.com/glue/latest/dg/blueprints-overview.html)來建立工作流程。藍圖提供的架構可協助您開始使用可重複使用的使用案例。例如，這可能是將資料從 Amazon S3 匯入 DynamoDB 資料表的工作流程。您甚至可以使用參數讓藍圖可重複使用。

如果資料管道涉及 AWS Glue 以外的更多服務，建議您使用 [AWS Step Functions](https://aws.amazon.com/step-functions/) 做為協調器。Step Functions 可以建立自動化工作流程，包括安全事件回應的手動核准步驟。您也可以使用 Step Functions 進行大規模平行或循序處理。

最後，我們建議您使用 [EventBridge](https://aws.amazon.com/eventbridge/) 在排程、事件或隨需時插入觸發條件。您也可以使用 EventBridge 建立具有篩選條件的管道。

## 存取控制


我們建議您使用 [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/) 進行存取控制。IAM 可讓您指定誰或什麼可以存取 AWS 中的服務和資源，並集中管理精細的許可。從儲存到自動化，再到使用處理工具，生命週期的每個階段都需要適當的存取許可。使用以資料為中心的使用案例時，您可以使用 [AWS Lake Formation](https://aws.amazon.com/lake-formation/) 簡化資料可用於廣泛分析以及跨帳戶的程序。