事件通知類型與目的地 - 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 主題。

該主題必須與您的 Amazon S3 儲存貯體相同 AWS 區域 。如需有關如何建立 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 佇列必須與您的 Amazon S3 儲存貯體位於 AWS 區域 相同的位置。如需有關如何建立 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 控台建立 Lambda 函數,以使用 AWS 基礎設施代表您執行程式碼。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 放

S3:: 文章 ObjectCreated

S3:: 複ObjectCreated製

S3:ObjectCreated: CompleteMultipartUpload

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

s3:ObjectCreated:CompleteMultipartUpload包括使用「複製」作業UploadPartCopy建立的物件。

S3:ObjectRemoved: *

S3:: 刪除 ObjectRemoved

S3:ObjectRemoved: DeleteMarkerCreated

透過使用ObjectRemoved事件類型,您可以在從值區中移除物件或批次物件時啟用通知。

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

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

S3:ObjectRestore: *

S3:: 文章 ObjectRestore

s3:: ObjectRestore 已完成

S3:: 刪除 ObjectRestore

透過使用ObjectRestore事件類型,您可以在從 S3 Glacier 彈性擷取儲存類別、S3 Glacier 深度存檔儲存類別、S3 智慧型分層封存存取層和 S3 智慧型分層深度存檔存取層還原物件時,收到事件啟動和完成的通知。您也可以在還原的物件複本過期時收到通知。

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

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

s3:Replication:*

S3: 複製:OperationFailedReplication

S3: 複製:OperationMissedThreshold

S3: 複製:OperationReplicatedAfterThreshold

S3: 複製:OperationNotTracked

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

s3:Replication:OperationFailedReplication 事件類型會在有資格複寫的物件無法複寫時通知您。s3:Replication:OperationMissedThreshold 事件類型會在有資格複寫的物件超過複寫的 15 分鐘閾值時通知您。

當有資格使用 S3 複寫時間控制進行複寫的物件,在 15 分鐘閾值之後複寫時,s3:Replication:OperationReplicatedAfterThreshold 事件類型會通知您。當有資格使用 S3 複寫時間控制進行複寫的物件但不再透過複寫指標追蹤時,s3:Replication:OperationNotTracked 事件類型會通知您。

S3:LifecycleExpiration: *

S3:: 刪除 LifecycleExpiration

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 放

S3:: 刪除 ObjectTagging

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

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

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

Amazon 支援的事件類型 EventBridge

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

事件排序和重複事件

Amazon S3 事件通知的設計目的是至少交付一次通知,但不能保證它們的到達順序與事件發生的順序相同。在極少數情況下,Amazon S3 的重試機制可能會導致同一物件事件重複的 S3 事件通知。如需有關處理重複或亂序事件的詳細資訊,請參閱 S AWS torage 部落格上的使用 Amazon S3 事件通知管理事件訂購和重複事件。