[SEO 子標題]
本指引可讓您將 Amazon DynamoDB 與 Amazon OpenSearch Service 整合,以啟用即時搜尋。大多數應用程式應使用 Amazon DynamoDB 與 Amazon OpenSearch Service 的零 ETL 整合。針對需求與零 ETL 整合應用程式不相符的應用程式,本指引示範了如何透過平行函數,從 DynamoDB 到 OpenSearch Service 對資料執行初始載入,以及如何將新資料複製到 OpenSearch Service。透過將資料保留在兩個位置,您可以將查詢定位到最符合您需求的資料庫:DynamoDB 支援任何需要高效能和可擴展性的固定存取模式,而 OpenSearch Service 則支援需要搜尋靈活性和篩選功能的存取模式。
請注意:[免責聲明]
架構圖
[架構圖說明]
初始載入
步驟 1
若要處理現有資料,系統會調用 AWS Lambda 函數來描述 Amazon DynamoDB 資料表,並根據傳回的項目計數將其分割為多個區段。函數會針對每個區段編號,將一則訊息寫入 Amazon Simple Queue Service (Amazon SQS) 佇列。
步驟 2
Amazon SQS 可充當 Lambda 的事件來源。Lambda 會透過佇列中的訊息來調用函數,並平行處理 DynamoDB 資料表的區段。
步驟 3
Lambda 函數使用平行掃描來讀取 Amazon SQS 來源事件中列出的 DynamoDB 資料表區段。
步驟 4
然後,該函數透過大量建立操作,將從 DynamoDB 擷取的資料批次寫入 Amazon OpenSearch Service。
串流變更
步驟 5
在 DynamoDB 中插入或更新項目,以調用 DynamoDB 串流擷取。
步驟 6
DynamoDB 串流會將從 DynamoDB 擷取的項目層級修改傳送至 Lambda 串流更新功能。
步驟 7
Lambda 函數透過批次索引操作,將該資料批次寫入 OpenSearch Service。使用 Amazon CloudWatch 中的 SearchableDocuments 指標,來追蹤擷取的文件。
開始使用
Well-Architected 支柱
AWS Well-Architected Framework 可協助您了解在雲端建立系統時所做決策的利弊。該架構的六根支柱讓您能夠學習設計和操作可靠、安全、高效、經濟高效且永續的系統的架構最佳實務。使用 AWS Well-Architected Tool (在 AWS 管理主控台中免費提供),您可以透過回答每根支柱的一組問題來針對這些最佳實務審查您的工作負載。
上方的架構圖是一個考量到 Well-Architected 最佳實務而建立的的解決方案的範例。若要完全實現 Well-Architected,您應該盡可能地多遵循 Well-Architected 的最佳實務。
-
卓越營運
AWS Cloud Development Kit (AWS CDK) 定義解決方案的基礎架構設施即程式碼,協助您實現一致的部署。Lambda 將工作分為較小的工作單位,每個單位負責不同的應用程式功能。這些單一任務功能可減少人為錯誤,並支援小型增量變更,如果失敗,更容易撤銷。
-
安全性
如適用,本指引會在私有 Amazon Virtual Private Cloud (Amazon VPC) 網路,而非公有網路中啟動服務。私有聯網透過 Amazon VPC 讓您控制資料的存取方式,以支援所有層級的安全性。此外,使用單一用途、最低權限 AWS Identity and Access Management (IAM) 政策可協助您防止許可變更造成更廣泛、非預期的後果,並降低使用者不當處理敏感資料帶來的風險。AWS Secrets Manager 產生並安全地儲存管理員機密,防止使用者在暴露風險的程式碼或環境變數中儲存憑證。
-
可靠性
如果某部分匯入失敗,Amazon SQS 會提供自動重試機制,協助您快速從失敗中復原。做為記錄系統,DynamoDB 使用時間點復原進行持續備份,從而在過去 35 天內即可復原至任何秒。OpenSearch Service 可協助您使用初始資料載入的「建立」操作,來防止兩個資料庫之間的偏移,以免較舊的資料覆寫較新的資料。OpenSearch Service 設定為使用單一節點叢集,但您可以將其變更為多可用區域叢集,以維持生產中的可用性。
-
效能達成效率
Lambda 可讓您平行化工作負載:從 DynamoDB 中讀取會進行分段式平行掃描,並在多個 Lambda 函數調用中分割。相較於單一執行緒,這種平行化能夠管理顯著更高的輸送量。
-
成本最佳化
Lambda 會在批次中一起讀取 DynamoDB 項目,而不是做為個別的 GetItem 請求。因此,本指引會取用更少的讀取容量單位。藉由減少初始化連線等任務花費的工作量,批次使用可減少運算時間和 Lambda 調用次數,從而降低運算成本。此外,OpenSearch Service 批次操作具有高效率,有助於降低運算資源的整體成本。
-
永續發展
Lambda 僅在需要將資料移至 OpenSearch Service 時調用函數,而且不會在閒置時執行。這有助於您最大限度地利用運算資源。此外,DynamoDB 做為無伺服器受管服務,有助於減少低效工作,並降低工作負載使用的總功耗。
相關內容
Amazon DynamoDB 與 Amazon OpenSearch Service 的零 ETL 整合現已推出
免責聲明
範例程式碼、軟體庫、命令列工具、概念驗證、範本或其他相關技術 (包括我們的人員提供的任何上述技術) 依據 AWS 客戶協議或您與 AWS 之間的相關書面協議 (以適用者為準) 作為 AWS 內容提供給您。您不得在您的生產帳戶、生產或其他關鍵資料中使用此 AWS 內容。您有責任根據您的特定品質控制實務和標準,依生產級用途來測試、保護和最佳化 AWS 內容 (如範例程式碼)。部署 AWS 內容可能會因建立或使用 AWS 收費資源 (如執行 Amazon EC2 執行個體或使用 Amazon S3 儲存) 而產生 AWS 費用。
本指引中對第三方服務或組織的參考並不意味著 Amazon 或 AWS 與第三方之間的認可、贊助或聯繫。AWS 的指引是技術起點,您可以在部署架構時自訂與第三方服務的整合。