如何建立在 S3 物件或作業發生變更時觸發的 EventBridge 規則,和對其進行疑難排解?
我想建立一個 Amazon EventBridge 工作流程,並使其在 Amazon Simple Storage Service (Amazon S3) 儲存貯體或物件變更時啟動。
解決方法
若要使用 EventBridge 擷取 Amazon S3 事件,您可以使用 AWS CloudTrail 或直接從 Amazon S3 擷取事件。
每個選項都有自己的中繼資料集。CloudTrail 提供的事件包括來自 AWS API、AWS Identity and Access Management (IAM) 和 userAgent 的詳細資訊。從 Amazon S3 傳送的事件包括物件詳細資訊,例如大小。
透過 CloudTrail 擷取 S3 事件
您可以使用 CloudTrail 監控和擷取對 S3 儲存貯體所做的變更,例如建立、修改或刪除。CloudTrail 會自動將這些事件轉送至 EventBridge。
若要透過 CloudTrail 擷取 S3 事件,請完成以下步驟:
- 建立 CloudTrail 追蹤,以記錄相關 S3 儲存貯體上的事件。
- 建立資源來處理 S3 事件。
**注意:**您建立的資源可以是任何受支援的 EventBridge 目標。例如,AWS Lambda、Amazon Elastic Container Service (Amazon ECS) 任務、API 目的地或 Amazon Kinesis Data Firehose 傳輸串流。 - 建立具有事件模式的 EventBridge 規則,以符合 S3 事件。以下範例展示的事件模式,與對特定 S3 儲存貯體進行的 PutObject、DeleteObject 和 DeleteObjects API 呼叫相符:
**注意:**這些索引鍵以 feature1/ 和 feature2/ 開頭。{ "source": [ "aws.s3" ], "detail-type": [ "AWS API Call via CloudTrail" ], "detail": { "eventName": [ "PutObject", "DeleteObject", "DeleteObjects" ], "requestParameters": { "bucketName": [ "123456789012-prod-app" ], "key": [ { "prefix": "feature1/" }, { "prefix": "feature2/" } ] } } } - 將您建立的資源與 EventBridge 規則建立關聯,作為目標。
有關如何擷取資料事件的詳細資訊,請參閱教學課程: 使用 EventBridge 記錄 Amazon S3 物件層級作業。
使用 Amazon S3 擷取 S3 事件
此選項不需要 CloudTrail。S3 儲存貯體設定為將該資源上的所有作業傳送至 EventBridge 服務。
啟用 S3 事件至 EventBridge
- 開啟 Amazon S3 console (Amazon S3 主控台)。
- 在 Buckets (儲存貯體) 清單中,選擇要為其啟用事件的儲存貯體名稱。
**注意:**如需詳細資訊,請參閱啟用 Amazon EventBridge。 - 選擇 Properties (屬性)。
- 前往 Event Notifications (事件通知) 區段,然後找到 Amazon EventBridge。選擇 Edit (編輯)。
- 在 Send notifications to Amazon EventBridge for all events in this bucket (向 Amazon EventBridge 傳送此儲存貯體中所有事件的通知),選擇 On (開啟)。
建立資源來處理 S3 事件
您建立的資源可以是任何受支援的 EventBridge 目標。
建立具有事件模式的 EventBridge 規則,以符合 S3 事件
建立具有事件模式的 EventBridge 規則,以符合 S3 事件。以下是在特定 S3 儲存貯體內建立或刪除物件時,啟用的事件模式範例:
{ "source": [ "aws.s3" ], "detail-type": [ "Object Created", "Object Deleted" ], "detail": { "bucket": { "name": [ "123456789012-prod-app" ] }, "object": { "size": [ { "numeric": [ ">=", 15728640 ] } ], "key": [ { "suffix": ".zip" } ] } } }
**注意:**此模式是針對檔案名稱參數的篩選條件,例如大小大於 15 MB 且副檔名為 zip。
將資源與規則建立關聯
將資源與您所建且以 EventBridge 規則為目標的規則建立關聯。
錯誤疑難排解
確定已正確設定必要的 CloudTrail 追蹤或 S3 事件通知。
使用 EventBridge TriggeredRules 和 Invocations 指標來確認規則成功配對次數以及目標成功調用次數。
TriggeredRules 資料點表示該規則與傳入事件相符。如果沒有資料點,請重新評估事件模式。
FailedInvocations 指標表示 EventBridge 將事件轉送到目標時發生了問題。這可能與 IAM 或資源政策權限或目標組態有關。
由於事件模式區分大小寫,因此「FAILED」和「failed」的處理方式不同。EventBridge Sandbox 工具提供來自 AWS 服務和 EventBridge 合作夥伴的範例事件。此工具會根據事件模式驗證傳入事件。
若要配對事件,事件模式中的所有欄位必須相符。若要對事件模式進行疑難排解,請移除欄位以建立更通用的事件模式。有關詳細資訊,請參閱如何對 EventBridge 規則問題進行疑難排解?
EventBridge 規則最多可以有 5 個目標。若要對此問題進行疑難排解,請暫時附加 CloudWatch Logs 群組目標或 Amazon Simple Notification Service (Amazon SNS) 主題。日誌群組和通知都會擷取轉送到目標的事件,並協助隔離錯誤組態。
相關資訊
如何建立 EventBridge 規則來自動回應 CloudTrail API 呼叫?
- 語言
- 中文 (繁體)

相關內容
已提問 2 年前
已提問 1 年前
已提問 2 年前
AWS 官方已更新 6 個月前