本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon EventBridge 中的事件匯流排目標
目標是指當事件符合為規則定義的事件模式時,EventBridge 會傳送事件的資源或端點。規則會處理事件資料,並將相關資訊傳送至目標。若要將事件資料交付至目標,EventBridge 需要存取目標資源的許可。您最多可以為每個規則定義五個目標。
當您將目標新增至規則且該規則不久會運行時,可能不會立即調用任何新的目標或更新的目標。允許一小段時間來讓變更生效。
下列影片涵蓋目標的基本概念:
EventBridge 主控台中可用的事件匯流排目標
您可以在 EventBridge 主控台中為規則設定下列目標類型:
API 目的地
API 目的地是 HTTPS 端點,您可以呼叫 做為事件匯流排規則的目標。當您將 API 目的地指定為規則目標時,EventBridge 會針對符合規則中指定事件模式的任何事件叫用 HTTPS 端點,然後隨請求傳遞事件資訊。如需詳細資訊,請參閱API 目的地。
事件匯流排
您可以指定其他事件匯流排做為規則的目標。這包括相同或不同 AWS 帳戶中的事件匯流排。
AWS 服務
您可以讓 EventBridge 將事件傳送到許多 AWS 服務資源。其中包含:
-
CodePipeline
-
Amazon EBS
CreateSnapshot
API 呼叫 -
EC2 Image Builder
-
EC2
RebootInstances
API 呼叫 -
EC2
StopInstances
API 呼叫 -
EC2
TerminateInstances
API 呼叫 -
Firehose 交付串流
-
Glue 工作流程
-
Inspector 評估範本
-
Kinesis 串流
-
Lambda 函數 (ASYNC)
-
SageMaker AI 管道
-
Amazon SNS 主題
EventBridge 不支援 Amazon SNS FIFO (先進先出) 主題。
-
Amazon SQS 佇列
-
Step Functions 狀態機器 (ASYNC)
-
Systems Manager Automation
-
Systems Manager OpsItem
-
Systems Manager Run Command
目標參數
有些目標不會將事件裝載中的資訊傳送至目標,而是將事件視為調用特定 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 輸入轉換
動態語法可以用於所有字符串,這些參數的非枚舉字段:
-
HttpParameters
(HeaderParameters
按鍵除外)
許可
若要能夠根據您所擁有的資源進行 API 呼叫,EventBridge 需要適當的許可。對於 AWS Lambda 和 Amazon SNS 資源,EventBridge 使用以資源為基礎的政策。針對 EC2 執行個體、Kinesis 資料串流和 Step Functions 數狀態機器,EventBridge 會使用您在 PutTargets
的 RoleARN
參數中指定的 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 呼叫的觸發詳細資料中。