本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
事件通知類型與目的地
Amazon S3 支援多種事件通知類型和可發佈通知的目的地。您可以在設定事件通知時,指定事件類型和目的地。每個事件通知只能指定一個目的地。Amazon S3 事件通知會針對每個通知訊息傳送一個事件項目。
支援的事件目的地
Amazon S3 可將事件通知訊息傳送至下列目標。
-
Amazon Simple Notification Service (Amazon SNS) 主題
-
Amazon Simple Queue Service (Amazon SQS) 佇列
-
AWS Lambda
-
Amazon EventBridge
但是,每個事件通知只能指定一個目的地類型。
注意
您必須授予 Amazon S3 許可才能將訊息張貼到 Amazon SNS 主題或 Amazon SQS 佇列。您還必須授予 Amazon S3 代表您叫用 AWS Lambda 函數的許可。如需如何授予這些許可的詳細資訊,請參閱 授予許可以將事件通知訊息發佈至目標。
Amazon SNS 主題
Amazon SNS 是管理完善且靈活的推送訊息服務。您可以使用此項服務將訊息推播至行動裝置或分散式服務。有了 SNS,只需發佈一次訊息,就可以進行一或多次的傳遞。目前,標準 SNS 僅允許作為 S3 事件通知目的地,而不允許作為 SNS FIFO。
Amazon SNS 會同時協調與管理訂閱端點或用戶端的訊息傳送或送達。您可以使用 Amazon SNS 主控台來建立可將通知傳送至其中的 Amazon SNS 主題。
主題必須與 AWS 區域 Amazon S3 儲存貯體位於相同的 中。如需有關如何建立 Amazon SNS 主題的資訊,請參閱《Amazon Simple Notification Service 開發人員指南》中的 Amazon SNS 入門,以及 Amazon SNS 常見問答集
您需要有下列資訊,才能使用可建立為事件通知目的地的 Amazon SNS 主題:
-
Amazon SNS 主題的 Amazon Resource Name (ARN)
-
有效的 Amazon SNS 主題訂閱。有了它,當訊息發佈至 Amazon SNS 主題時,主題訂閱者會收到通知。
Amazon SQS 佇列
Amazon SQS 提供可靠並可擴展的代管佇列,供訊息往返電腦期間儲存訊息之用。您可以使用 Amazon SQS 傳輸任何資料量,但不需要其他服務一直都能使用。您可以使用 Amazon SQS 主控台來建立可將通知傳送至其中的 Amazon SQS 佇列。
Amazon SQS 佇列必須與 AWS 區域 Amazon S3 儲存貯體位於相同的 中。如需有關如何建立 Amazon SQS 佇列的指示,請參閱《Amazon Simple Queue Service 開發人員指南》中的什麼是 Amazon Simple Queue Service 和 Amazon SQS 入門。
您需要有下列資訊,才能使用 Amazon SQS 佇列作為事件通知目的地:
-
Amazon SQS 佇列的 Amazon Resource Name (ARN)
注意
Amazon Simple Queue Service FIFO (先進先出) 佇列不支援做為 Amazon S3 事件通知目的地。若要傳送 Amazon S3 事件通知給 Amazon SQS FIFO 佇列,您可以使用 Amazon EventBridge。如需詳細資訊,請參閱啟用 Amazon EventBridge。
Lambda 功能
您可以使用 AWS Lambda 擴展具有自訂邏輯的 AWS 其他服務,或建立您自己的後端,以 AWS 大規模、效能和安全性運作。使用 Lambda,您可以建立離散的事件驅動應用程式,只在需要時執行。您也可以使用它來自動將這些應用程式從每天幾個請求擴展到每秒數千個請求。
Lambda 可執行自訂程式碼來回應 Amazon S3 儲存貯體事件。您可以自訂程式碼上傳到 Lambda,以建立 Lambda 函數。當 Amazon S3 偵測到特定類型的事件時,可以將事件發佈至 , AWS Lambda 並在 Lambda 中叫用您的函數。作為回應,Lambda 會執行您的函數。例如,它可能會偵測到的其中一個事件類型是建立物件的事件。
您可以使用 AWS Lambda 主控台來建立使用基礎設施代表您執行程式碼的 AWS Lambda 函數。Lambda 函式必須位在與 S3 儲存貯體相同的區域中。您也必須具有 Lambda 函式的名稱或 ARN,以將 Lambda 函式設定為事件通知目的地。
警告
如果您的通知寫入觸發通知的同一個儲存貯體,則可能會導致執行迴圈。例如,如果儲存貯體在物件每次上傳時都觸發 Lambda 函式,且該函式會將物件上傳至儲存貯體,則函式會間接地觸發本身。若要避免此狀況,請使用兩個儲存貯體,或將觸發設定為僅套用至傳入物件所用的字首。
如需搭配 使用 Amazon S3 通知的詳細資訊和範例 AWS Lambda,請參閱《 AWS Lambda 開發人員指南》中的搭配使用 AWS Lambda 與 Amazon S3。
Amazon EventBridge
Amazon EventBridge 是無伺服器事件匯流排,可接收來自 AWS 服務的事件。您可以設定規則以比對事件並將其交付至目標,例如 AWS 服務或 HTTP 端點。如需詳細資訊,請參閱《Amazon EventBridge 使用者指南》中的什麼是 EventBridge。
與其他目的地不同,您可以為儲存貯體啟用或停用傳遞至 EventBridge 的事件。如果您啟用傳遞,則所有事件都會傳送至 EventBridge。此外,您可以使用 EventBridge 規則將事件路由至其他目標。
SQS、SNS 和 Lambda 支援的事件類型
Amazon S3 可以發佈下列類型的事件。您必須在通知組態中指定這些事件類型。
事件類型 | 描述 |
---|---|
|
啟用通知時,Amazon S3 會發佈測試通知。這是為了確保主題存在,且儲存貯體擁有者擁有發佈指定主題的許可。 如果啟用通知失敗,則不會收到測試通知。 |
|
|
|
透過使用 您可以使用 這些事件通知不會提醒您生命週期組態自動刪除或操作失敗。 |
|
透過使用
|
s3:ReducedRedundancyLostObject |
您會在 Amazon S3 偵測到缺少 RRS 儲存類別物件時,收到此通知事件。 |
|
透過使用
|
|
透過使用
|
s3:LifecycleTransition |
當物件透過 S3 生命週期組態轉換至另一個 Amazon S3 儲存類別時,您會收到此通知事件。 |
s3:IntelligentTiering |
當 S3 Intelligent-Tiering 儲存類別中的物件移至封存存取層或 Deep Archive 存取層時,您會收到此通知事件。 |
|
透過使用
|
s3:ObjectAcl:Put |
當 ACL 在物件上標記為 PUT 或現有 ACL 變更時,您會收到此通知事件。當請求對物件的 ACL 沒有變更時,則不會產生事件。 |
Amazon EventBridge 的支援事件類型
如需 Amazon S3 將傳送至 Amazon EventBridge 的事件類型清單,請參閱 使用 EventBridge。
事件排序和重複事件
Amazon S3 事件通知旨在至少傳送一次通知,但不保證以事件發生的相同順序送達。在極少數情況下,Amazon S3 的重試機制可能會導致相同物件事件的重複 S3 事件通知。如需處理重複或順序不正確事件的詳細資訊,請參閱 AWS 儲存部落格上的使用 Amazon S3 事件通知管理事件排序和重複事件