扇出至 AWS Event Fork 管道 - Amazon Simple Notification Service

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

扇出至 AWS Event Fork 管道

對於事件封存和分析,Amazon SNS 現在建議使用其與 Amazon Data Firehose 的原生整合。您可以將 Firehose 交付串流訂閱SNS主題,這可讓您將通知傳送至封存和分析端點,例如 Amazon Simple Storage Service (Amazon S3) 儲存貯體、Amazon Redshift 資料表、Amazon OpenSearch Service (OpenSearch Service) 等。將 Amazon SNS與 Firehose 交付串流搭配使用是完全受管且無程式碼的解決方案,不需要您使用 AWS Lambda 函數。如需詳細資訊,請參閱Fanout to Firehose 交付串流

您可以使用 Amazon SNS建置事件驅動的應用程式,這些應用程式使用訂閱者服務來自動執行工作,以回應發佈者服務觸發的事件。這個架構模式可讓服務更具重複使用性、互通性和可擴展性。不過,可能需要投入更多勞力將事件分支到管道中處理,以滿足常見的事件處理需求,例如事件儲存、備份、搜尋、分析和重播。

為了加速事件驅動應用程式的開發,您可以將由 AWS Event Fork Pipelines 驅動的事件處理管道訂閱至 Amazon SNS主題。 AWS Event Fork Pipelines 是一組開放原始碼巢狀應用程式 ,以AWS 無伺服器應用程式模型 (AWS SAM) 為基礎,您可以直接從 AWS Event Fork Pipelines 套件 (選擇顯示建立自訂IAM角色或資源政策的應用程式) 部署到 AWS 您的帳戶。

如需 AWS Event Fork 管道使用案例,請參閱 部署和測試 AWS Event Fork 管道範例應用程式

AWS Event Fork 管道的運作方式

AWS Event Fork Pipelines 是一種無伺服器設計模式。不過,它也是一組以 為基礎的 AWS SAM巢狀無伺服器應用程式 (您可以直接從 AWS Serverless Application Repository (AWS SAR) 部署到 , AWS 帳戶 以豐富事件驅動平台)。因應您的架構要求,您可以單獨部署這些巢狀應用程式。

下圖顯示由三個巢狀應用程式補充的 AWS Event Fork 管道應用程式。您可以根據您的架構需求,在 上 AWS SAR獨立部署來自 AWS Event Fork Pipelines 套件的任何管道。

Event processing architecture with Amazon SNS topic feeding into multiple pipelines.

每個管道都訂閱相同的 Amazon SNS主題,允許自己平行處理事件,因為這些事件會發佈到主題。每個管道各自獨立,而且可以設定自己的訂閱篩選政策。這可讓管道只處理它有感興趣的事件子集 (而不是發佈到該主題的所有事件)。

注意

由於您將三個 AWS Event Fork Pipelines 與一般事件處理管道一起放置 (可能已訂閱 Amazon SNS主題),因此您不需要變更目前訊息發佈者的任何部分,即可在現有工作負載中利用 AWS Event Fork Pipelines。

事件儲存和備份管道

下圖顯示事件儲存和備份管道。您可以訂閱此管道至 Amazon SNS主題,以自動備份流經您系統的事件。

此管道包含緩衝 Amazon SNS主題傳遞事件的 Amazon SQS佇列、自動輪詢佇列中這些事件並將其推送至 Amazon Data Firehose 串流的 AWS Lambda 函數,以及持久備份串流載入事件的 Amazon S3 儲存貯體。

AWS event storage backup pipeline with SNS, SQS, Lambda, Kinesis, S3, and Athena components.

若要微調 Firehose 串流的行為,您可以將它設定為將事件載入到儲存貯體之前,先緩衝、轉換和壓縮事件。載入事件時,您可以使用 Amazon Athena 使用標準查詢來SQL查詢儲存貯體。您也可以將管道設定為重複使用現有的 Amazon S3 儲存貯體,或建立新的儲存貯體。

事件搜尋和分析管道

下圖顯示事件搜尋和分析管道。您可以訂閱此管道到您的 Amazon SNS主題,以為在搜尋網域中流經您系統的事件編製索引,然後對其執行分析。

此管道包含緩衝 Amazon SNS主題交付事件的 Amazon SQS佇列、從佇列輪詢事件並將其推送到 Amazon Data Firehose 串流的 AWS Lambda 函數、為 Firehose 串流載入的事件編製索引的 Amazon OpenSearch Service 網域,以及存放無法在搜尋網域中編製索引之無效字母事件的 Amazon S3 儲存貯體。

Event search analytics pipeline with AWS 服務 for data processing and storage.

若要調整 Firehose 串流的事件緩衝、轉換和壓縮,您可以設定此管道。

您也可以設定管道是否應該重複使用 中的現有 OpenSearch 網域, AWS 帳戶 或為您建立新的網域。隨著搜尋網域中編製事件的索引,您可以使用 Kibana 對您的事件進行分析,並即時更新視覺化儀表板。

事件重播管道

下圖顯示事件重播管道。若要記錄過去 14 天內系統處理的事件 (例如,您的平台需要從失敗中復原時),您可以將此管道訂閱至 Amazon SNS主題,然後重新處理事件。

此管道包含緩衝 Amazon SNS主題交付事件的 Amazon SQS佇列,以及從佇列輪詢事件並將其重新驅動到您定期事件處理管道的 AWS Lambda 函數,該管道也會訂閱您的主題。

Event processing pipeline with Amazon SNS, SQS queues, and AWS Lambda for replay functionality.
注意

預設情況下,重播函數會停用,不會轉送您的事件。如果您需要重新處理事件,您必須啟用 Amazon SQS 重播佇列作為 AWS Lambda 重播函數的事件來源。

部署 AWS Event Fork 管道

AWS Event Fork Pipelines 套件 (選擇顯示建立自訂IAM角色或資源政策的應用程式) 可在 中作為公有應用程式群組使用 AWS Serverless Application Repository,您可以在其中使用AWS Lambda 主控台 手動部署和測試這些應用程式。如需使用 AWS Lambda 主控台部署管道的相關資訊,請參閱 訂閱 Amazon SNS主題 AWS 的事件叉管道

在生產案例中,我們建議您將 AWS Event Fork 管道內嵌到整體應用程式的 AWS SAM範本中。巢狀應用程式功能可讓您將資源 AWS SAM新增至AWS::Serverless::Application範本、參考巢狀應用程式的 AWS SARApplicationIdSemanticVersion ,藉此執行此操作。

例如,您可以將下列程式碼片段新增至範本的 YAML AWS SAM Resources區段,以使用 Event Storage 和 Backup Pipeline 做為巢狀應用程式。

Backup: Type: AWS::Serverless::Application Properties: Location: ApplicationId: arn:aws:serverlessrepo:us-east-2:123456789012:applications/fork-event-storage-backup-pipeline SemanticVersion: 1.0.0 Parameters: #The ARN of the Amazon SNS topic whose messages should be backed up to the Amazon S3 bucket. TopicArn: !Ref MySNSTopic

當您指定參數值時,您可以使用 AWS CloudFormation 內部函數來參考範本中的其他資源。例如,在上面YAML的程式碼片段中, TopicArn 參數會參考 AWS SAM 範本中其他地方MySNSTopic定義的AWS::SNS::Topic資源 。如需詳細資訊,請參閱 AWS CloudFormation 使用者指南 中的內部函數參考

注意

應用程式的 AWS Lambda AWS SAR主控台頁面包含複製為SAM資源按鈕,可將巢狀 AWS SAR應用程式至剪貼簿YAML所需的 複製。