Amazon EventBridge 中的事件匯流排目標 - Amazon EventBridge

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

Amazon EventBridge 中的事件匯流排目標

目標是指當事件符合為規則定義的事件模式時,EventBridge 會傳送事件的資源或端點。規則會處理事件資料,並將相關資訊傳送至目標。若要將事件資料交付至目標,EventBridge 需要存取目標資源的許可。您最多可以為每個規則定義五個目標。

當您將目標新增至規則且該規則不久會運行時,可能不會立即調用任何新的目標或更新的目標。允許一小段時間來讓變更生效。

下列影片涵蓋目標的基本概念:

EventBridge 主控台中可用的事件匯流排目標

您可以在 EventBridge 主控台中為規則設定下列目標類型:

目標參數

有些目標不會將事件裝載中的資訊傳送至目標,而是將事件視為調用特定 API 的觸發器。EventBridge 使用目標參數來決定該目標會發生什麼情況。這些索引標籤包括以下項目:

  • API 目的地 (傳送至 API 目的地的資料必須與 API 的結構相符。您必須使用 InputTransformer 物件來確保資料結構正確。如果您想要包含原始事件裝載,請在 InputTransformer 中進行參考。)

  • API Gateway (傳送至 API Gateway 的資料必須與 API 的結構相符。您必須使用 InputTransformer 物件來確保資料結構正確。如果您想要包含原始事件裝載,請在 InputTransformer 中進行參考。)

  • Amazon EC2 Image Builder

  • RedshiftDataParameters (Amazon Redshift 資料 API 叢集)

  • SageMakerPipelineParameters (Amazon SageMaker 執行期模型建置管道)

注意

EventBridge 不支援所有 JSON 路徑語法,並在執行期對其進行評估。支援的語法包括:

  • 點符號 (例如 $.detail)

  • 破折號

  • 底線

  • 英數字元

  • 陣列索引

  • 萬用字元 (*)

動態路徑參數

某些目標參數支援選用的動態 JSON 路徑語法。此語法可讓您指定 JSON 路徑,而非靜態值 (例如 $.detail.state)。整個值必須是 JSON 路徑,而不僅僅是其中的一部分。例如,RedshiftParameters.Sql 可以是 $.detail.state 但不能是 "SELECT * FROM $.detail.state"。這些路徑會在執行期以指定路徑中的事件裝載本身的資料動態取代。動態路徑參數無法參考輸入轉換所產生的新值或轉換值。動態參數 JSON 路徑支援的語法與轉換輸入時相同。如需詳細資訊,請參閱 Amazon EventBridge 輸入轉換

動態語法可以用於所有字符串,這些參數的非枚舉字段:

許可

若要能夠根據您所擁有的資源進行 API 呼叫,EventBridge 需要適當的許可。對於 AWS Lambda 和 Amazon SNS 資源,EventBridge 使用以資源為基礎的政策。針對 EC2 執行個體、Kinesis 資料串流和 Step Functions 數狀態機器,EventBridge 會使用您在 PutTargetsRoleARN 參數中指定的 IAM 角色。您可以調用具有已設定 IAM 授權的 API Gateway 端點,但如果您尚未設定授權,則該角色為選用角色。如需詳細資訊,請參閱 Amazon EventBridge 和 AWS Identity and Access Management

如果另一個帳戶位於同一地區,並已授予您許可,您可以將事件傳送至該帳戶。如需詳細資訊,請參閱 在 Amazon EventBridge 中的 AWS 帳戶之間傳送和接收事件

如果您的目標已加密,則必須在 KMS 金鑰政策中包含下列區段。

{ "Sid": "Allow EventBridge to use the key", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }

AWS Batch 任務佇列做為目標

某些參數可透過 BatchParameters 設定至 AWS Batch submitJob

其他可以在事件裝載中進行指定。如果事件裝載 (透過或經由 InputTransformers 傳遞) 包含以下鍵,則它們將映射至 submitJob 請求參數:

  • ContainerOverrides: containerOverrides

    注意

    這僅包括命令、環境、記憶體和 vcpus

  • DependsOn: dependsOn

    注意

    這僅包括 jobId

  • Parameters: parameters

CloudWatch Logs 群組做為目標

如果您未將 InputTransformer 與 CloudWatch 日誌搭配使用,則會使用事件裝載作為日誌訊息,且事件來源則用作時間戳記。如果您確實使用 InputTransformer,則模板必須是:

{"timestamp":<timestamp>,"message":<message>}

EventBridge 會批次處理傳送至日誌串流的項目;因此,EventBridge 可能會將單一或多個事件傳送至日誌串流,視流量而定。

CodeBuild 專案做為目標

如果您使用 InputTransformers 將輸入事件塑造為目標,以符合 CodeBuild StartBuildRequest 結構,則這些參數將被映射到 1 對 1 並傳遞至 codeBuild.StartBuild

Amazon ECS 任務做為目標

如果您使用 InputTransformers 將輸入事件塑造為目標,以符合 Amazon ECS RunTask TaskOverride 結構,則這些參數將被映射到 1 對 1 並傳遞至 ecs.RunTask

Incident Manager 回應計劃作為目標

如果符合的事件來自 CloudWatch 警示,警示狀態變更詳細資料會填入事件管理員的 StartIncidentRequest 呼叫的觸發詳細資料中。