事件通知類型與目的地 - Amazon Simple Storage Service

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

事件通知類型與目的地

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 ServiceAmazon 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 可以發佈下列類型的事件。您必須在通知組態中指定這些事件類型。

事件類型 描述

s3:TestEvent

啟用通知時,Amazon S3 會發佈測試通知。這是為了確保主題存在,且儲存貯體擁有者擁有發佈指定主題的許可。

如果啟用通知失敗,則不會收到測試通知。

s3:ObjectCreated:*

s3:ObjectCreated:Put

s3:ObjectCreated:Post

s3:ObjectCreated:Copy

s3:ObjectCreated:CompleteMultipartUpload

PUTPOSTCOPY 等 Amazon S3 API 操作可以建立物件。使用這些事件類型,您可以在使用特定 API 操作建立物件時啟用通知。或者,您可以使用 s3:ObjectCreated:* 事件類型來請求通知,無論用於建立物件的 API 為何。

s3:ObjectCreated:CompleteMultipartUpload 包含使用 UploadPartCopy 複製操作建立的物件。

s3:ObjectRemoved:*

s3:ObjectRemoved:Delete

s3:ObjectRemoved:DeleteMarkerCreated

透過使用 ObjectRemoved 事件類型,您可以啟用從儲存貯體移除一個物件或一批物件時的通知。

您可以使用 s3:ObjectRemoved:Delete 事件類型,在刪除物件或永久刪除版本控制的物件時要求通知。或者您可以使用 s3:ObjectRemoved:DeleteMarkerCreated,在建立版本控制物件的刪除標記時,請求通知。如需如何刪除版本控制物件的指示,請參閱 刪除啟用版本控制功能之儲存貯體中的物件。您也可以使用萬用字元 s3:ObjectRemoved:*,在刪除物件時隨時要求通知。

這些事件通知不會提醒您生命週期組態自動刪除或操作失敗。

s3:ObjectRestore:*

s3:ObjectRestore:Post

s3:ObjectRestore:Completed

s3:ObjectRestore:Delete

透過使用 ObjectRestore 事件類型,您可以收到從 S3 Glacier Flexible Retrieval 儲存類別、S3 Glacier Deep Archive 儲存類別、S3 Intelligent-Tiering Archive Access 層和 S3 Intelligent-Tiering Deep Archive Access 層還原物件時的事件起始和完成通知。您也可以在還原的物件複本過期時收到通知。

s3:ObjectRestore:Post 事件類型會通知您物件還原的起始。s3:ObjectRestore:Completed 事件類型會通知您有關還原完成的情況。s3:ObjectRestore:Delete 事件類型會在還原物件的臨時複本過期時通知您。

s3:ReducedRedundancyLostObject 您會在 Amazon S3 偵測到缺少 RRS 儲存類別物件時,收到此通知事件。

s3:Replication:*

s3:Replication:OperationFailedReplication

s3:Replication:OperationMissedThreshold

s3:Replication:OperationReplicatedAfterThreshold

s3:Replication:OperationNotTracked

透過使用 Replication 事件類型,您可以收到已啟用 S3 複寫指標或 S3 複寫時間控制 (S3 RTC) 之複寫組態的通知。您可以透過追蹤擱置的位元組、擱置中的作業和複寫延遲來監控複寫事件的每分鐘進度。如需複寫指標的相關資訊,請參閱使用指標、事件通知和狀態監控複寫

  • s3:Replication:OperationFailedReplication 事件類型會在有資格複寫的物件無法複寫時通知您。

  • 當有資格使用 S3 RTC 進行複寫的物件超過複寫的 15 分鐘閾值時,s3:Replication:OperationMissedThreshold 事件類型會通知您。

  • 當有資格使用 S3 RTC 進行複寫的物件,在 15 分鐘閾值之後複寫時,s3:Replication:OperationReplicatedAfterThreshold 事件類型會通知您。

  • 當有資格進行即時複寫的物件 (相同區域複寫 [SRR] 或跨區域複寫 [CRR]) 不再受到複寫指標追蹤時,s3:Replication:OperationNotTracked 事件類型會通知您。

s3:LifecycleExpiration:*

s3:LifecycleExpiration:Delete

s3:LifecycleExpiration:DeleteMarkerCreated

透過使用 LifecycleExpiration 事件類型,您可以在 Amazon S3 根據您的 S3 生命週期組態刪除物件時收到通知。

s3:LifecycleExpiration:Delete 事件類型會在刪除未進行版本控制之儲存貯體中的物件時通知您。當 S3 生命週期組態永久刪除物件版本時,它也會通知您。S3 生命週期在建立用於刪除版本控制儲存貯體中物件之最新版本的刪除標記時,s3:LifecycleExpiration:DeleteMarkerCreated 事件類型會通知您。

s3:LifecycleTransition 當物件透過 S3 生命週期組態轉換至另一個 Amazon S3 儲存類別時,您會收到此通知事件。
s3:IntelligentTiering 當 S3 Intelligent-Tiering 儲存類別中的物件移至封存存取層或 Deep Archive 存取層時,您會收到此通知事件。

s3:ObjectTagging:*

s3:ObjectTagging:Put

s3:ObjectTagging:Delete

透過使用 ObjectTagging 事件類型,您可以啟用為物件新增物件標籤或從物件刪除物件標籤時的通知。

s3:ObjectTagging:Put 事件類型會在物件上的標籤為 PUT 或現有標籤已更新時通知您。s3:ObjectTagging:Delete 事件類型會在標籤從物件移除時通知您。

s3:ObjectAcl:Put 當 ACL 在物件上標記為 PUT 或現有 ACL 變更時,您會收到此通知事件。當請求對物件的 ACL 沒有變更時,則不會產生事件。

Amazon EventBridge 的支援事件類型

如需 Amazon S3 將傳送至 Amazon EventBridge 的事件類型清單,請參閱 使用 EventBridge

事件排序和重複事件

Amazon S3 事件通知旨在至少傳送一次通知,但不保證以事件發生的相同順序送達。在極少數情況下,Amazon S3 的重試機制可能會導致相同物件事件的重複 S3 事件通知。如需處理重複或順序不正確事件的詳細資訊,請參閱 AWS 儲存部落格上的使用 Amazon S3 事件通知管理事件排序和重複事件