本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
訂閱來自不同 AWS 區域中 S3 儲存貯體的事件通知的 Lambda 函數
建立者:Suresh Konathala、Andrew Preston 和 Arindom Sarkar
Summary
Amazon Simple Storage Service (Amazon S3) 事件通知會發佈 S3 儲存貯體中特定事件的通知 (例如,物件建立的事件、物件移除事件或還原物件事件)。您可以使用 AWS Lambda 函數,根據您的應用程式需求處理這些通知。不過,Lambda 函數無法直接從在不同 AWS 區域中託管的 S3 儲存貯體訂閱通知。
此模式的方法會部署廣發性案例,透過為每個區域使用 Amazon S3 Simple Notification Service (Amazon SNS) 主題來處理來自跨區域 S3 儲存貯體的 Amazon S3 通知。這些區域 SNS 主題會將 Amazon S3 事件通知傳送至包含 Lambda 函數的中央區域中的 Amazon Simple Queue Service (Amazon SQS) 佇列。Lambda 函數會訂閱此 SQS 佇列,並根據組織的需求處理事件通知。
先決條件和限制
先決條件
作用中的 AWS 帳戶
在多個區域中現有的 S3 儲存貯體,包括託管 Amazon SQS 佇列和 Lambda 函數的中央區域。
安裝並設定 AWS Command Line Interface (AWS CLI)。如需詳細資訊,請參閱 AWS CLI 文件中的安裝、更新和解除安裝 AWS CLI。
熟悉 Amazon SNS 中的廣發案例。如需詳細資訊,請參閱 Amazon SNS 文件中的常見 Amazon SNS 案例。 Amazon SNS
架構
下圖顯示此模式方法的架構。

該圖顯示以下工作流程:
Amazon S3 會將有關 S3 儲存貯體的事件通知 (例如,建立的物件、移除的物件或還原的物件) 傳送至相同區域中的 SNS 主題。
SNS 主題會將事件發佈至中央區域中的 SQS 佇列。
SQS 佇列設定為 Lambda 函數的事件來源,並緩衝 Lambda 函數的事件訊息。
Lambda 函數會輪詢訊息的 SQS 佇列,並根據您的應用程式需求處理 Amazon S3 事件通知。
技術堆疊
Lambda
Amazon SNS
Amazon SQS
Amazon S3
工具
AWS CLI – AWS 命令列界面 (AWS CLI) 是一種開放原始碼工具,可透過命令列 shell 中的命令與 AWS 服務互動。透過最少的組態,您可以從命令提示中執行 AWS CLI 命令,該命令會實作與瀏覽器型 AWS 管理主控台所提供功能相同的功能。
AWS CloudFormation – AWS CloudFormation 可協助您建立模型和設定 AWS 資源、快速一致地佈建資源,以及在整個生命週期中管理資源。您可以使用範本來描述您的資源及其相依性,並將它們一起啟動和設定為堆疊,而不是個別管理資源。您可以管理和佈建跨多個 AWS 帳戶和 AWS 區域的堆疊。
AWS Lambda – AWS Lambda 是一種運算服務,支援執行程式碼,無需佈建或管理伺服器。Lambda 只有在需要時才會執行程式碼,可自動從每天數項請求擴展成每秒數千項請求。只需為使用的運算時間支付費用,一旦未執行程式碼,就會停止計費。
Amazon SNS – Amazon Simple Notification Service (Amazon SNS) 會協調和管理發佈者和用戶端之間的訊息傳遞或傳送,包括 Web 伺服器和電子郵件地址。訂閱者會收到發佈到所訂閱主題的所有訊息,且某一主題的所有訂閱者均會收到相同訊息。
Amazon SQS – Amazon Simple Queue Service (Amazon SQS) 提供安全、耐用且可用的託管佇列,可讓您整合和解耦分散式軟體系統和元件。Amazon SQS 同時支援標準佇列和 FIFO 佇列。
史詩
任務 | 描述 | 所需的技能 |
---|---|---|
使用 Lambda 觸發條件建立 SQS 佇列。 | 登入 AWS 管理主控台,並使用 AWS Lambda 文件中的教學課程使用 Lambda 搭配 Amazon SQS 的指示,在您的中央區域中建立下列資源: AWS Lambda
注意請務必將 SQS 佇列設定為 Lambda 函數的事件來源。 | AWS DevOps,雲端架構師 |
任務 | 描述 | 所需的技能 |
---|---|---|
建立 SNS 主題以接收 Amazon S3 事件通知。 | 在您要接收 Amazon S3 事件通知的區域中建立 SNS 主題。如需詳細資訊,請參閱 Amazon SNS 文件中的建立 SNS 主題。 Amazon SNS 重要請務必記錄 SNS 主題的 Amazon Resource Name (ARN)。 | AWS DevOps,雲端架構師 |
訂閱 SNS 主題至中央 SQS 佇列。 | 將您的 SNS 主題訂閱您的中央區域託管的 SQS 佇列。如需詳細資訊,請參閱 Amazon SNS SNS 文件中的訂閱 SNS 主題。 | AWS DevOps,雲端架構師 |
更新 SNS 主題的存取政策。 |
| AWS DevOps,雲端架構師 |
設定區域中每個 S3 儲存貯體的通知。 | 設定區域中每個 S3 儲存貯體的事件通知。如需詳細資訊,請參閱《Amazon S3 文件》中的使用 Amazon S3 主控台啟用和設定事件通知。 Amazon S3 注意在目的地區段中,選擇 SNS 主題,並指定您先前建立之 SNS 主題的 ARN。 | AWS DevOps,雲端架構師 |
針對所有必要的區域重複此史詩。 | 重要針對您要接收 Amazon S3 事件通知的每個區域重複此史詩中的任務,包括您的中央區域。 | AWS DevOps,雲端架構師 |
相關資源
設定存取政策 (Amazon SQS 文件)
將 SQS 佇列設定為事件來源 (AWS Lambda 文件)
設定 SQS 佇列以啟動 Lambda 函數 (Amazon SQS 文件)
AWS::Lambda::Function 資源 (AWS CloudFormation 文件)