本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
事件通知類型與目的地
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 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 控台建立 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:ObjectRemoved: * S3:: 刪除 ObjectRemoved S3:ObjectRemoved: DeleteMarkerCreated |
透過使用ObjectRemoved事件類型,您可以在從值區中移除物件或批次物件時啟用通知。 您可以使用 這些事件通知不會提醒您生命週期組態自動刪除或操作失敗。 |
S3:ObjectRestore: * S3:: 文章 ObjectRestore s3:: ObjectRestore 已完成 S3:: 刪除 ObjectRestore |
透過使用ObjectRestore事件類型,您可以在從 S3 Glacier 彈性擷取儲存類別、S3 Glacier 深度存檔儲存類別、S3 智慧型分層封存存取層和 S3 智慧型分層深度存檔存取層還原物件時,收到事件啟動和完成的通知。您也可以在還原的物件複本過期時收到通知。
|
S3:ReducedRedundancyLostObject | 您會在 Amazon S3 偵測到缺少 RRS 儲存類別物件時,收到此通知事件。 |
s3:Replication:* S3: 複製:OperationFailedReplication S3: 複製:OperationMissedThreshold S3: 複製:OperationReplicatedAfterThreshold S3: 複製:OperationNotTracked |
透過使用「複寫」事件類型,您可以收到已啟用 S3 複寫指標或 S3 複寫時間控制 (S3 RTC) 之複寫組態的通知。您可以追蹤擱置的位元組、擱置中的作業和複寫延遲,來監視複寫事件的 minute-by-minute 進度。如需複寫指標的相關資訊,請參閱使用複寫指標和 S3 事件通知監控進度。
當有資格使用 S3 複寫時間控制進行複寫的物件,在 15 分鐘閾值之後複寫時, |
S3:LifecycleExpiration: * S3:: 刪除 LifecycleExpiration S3:LifecycleExpiration: DeleteMarkerCreated |
透過使用LifecycleExpiration事件類型,您可以在 Amazon S3 根據 S3 生命週期組態刪除物件時收到通知。
|
S3:LifecycleTransition | 當物件透過 S3 生命週期組態轉換至另一個 Amazon S3 儲存類別時,您會收到此通知事件。 |
S3:IntelligentTiering | 當 S3 Intelligent-Tiering 儲存類別中的物件移至封存存取層或 Deep Archive 存取層時,您會收到此通知事件。 |
S3:ObjectTagging: * S3:: ObjectTagging 放 S3:: 刪除 ObjectTagging |
透過使用ObjectTagging事件類型,您可以在物件中新增或刪除物件標籤時啟用通知。
|
S3:: ObjectAcl 放 | 當 ACL 在物件上標記為 PUT 或現有 ACL 變更時,您會收到此通知事件。當請求對物件的 ACL 沒有變更時,則不會產生事件。 |
Amazon 支援的事件類型 EventBridge
如需 Amazon S3 將傳送至 Amazon 的事件類型清單 EventBridge,請參閱使用 EventBridge。
事件排序和重複事件
Amazon S3 事件通知的設計目的是至少交付一次通知,但不能保證它們的到達順序與事件發生的順序相同。在極少數情況下,Amazon S3 的重試機制可能會導致同一物件事件重複的 S3 事件通知。如需有關處理重複或亂序事件的詳細資訊,請參閱 S AWS torage 部落格上的使用 Amazon S3 事件通知管理事件訂購和重複