本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon 中的事件匯流排目標 EventBridge
目標是當事件符合規則 定義的事件模式時,將事件 EventBridge 傳送至 的資源或端點。規則會處理事件資料,並將相關資訊傳送至目標。若要將事件資料傳遞至目標, EventBridge 需要存取目標資源的許可。您最多可以為每個規則定義五個目標。
當您將目標新增至規則且該規則不久會運行時,可能不會立即調用任何新的目標或更新的目標。允許一小段時間來讓變更生效。
下列影片涵蓋目標的基本概念:
主控台中 EventBridge可用的事件匯流排目標
您可以在 EventBridge 主控台中為事件設定下列目標:
-
CodePipeline
-
Amazon EBS
CreateSnapshot
API呼叫 -
EC2 映像建置器
-
EC2
RebootInstances
API 呼叫 -
EC2
StopInstances
API 呼叫 -
EC2
TerminateInstances
API 呼叫 -
Firehose 交付串流
-
Glue 工作流程
-
Inspector 評估範本
-
Kinesis 串流
-
Lambda 函數 (ASYNC)
-
SageMaker 管道
-
Amazon SNS主題
EventBridge 不支援 Amazon SNSFIFO(先進先出) 主題 。
-
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 Data API叢集) -
SageMakerPipelineParameters
(Amazon SageMaker Runtime 模型建置管道)
注意
EventBridge 不支援所有 JSON Path 語法,並在執行階段對其進行評估。支援的語法包括:
點符號 (例如
$.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 會使用您在 中的 RoleARN
參數中指定的IAM角色PutTargets
。您可以叫用已設定IAM授權的API閘道端點,但如果您尚未設定授權,則角色為選用。如需詳細資訊,請參閱Amazon EventBridge 和 AWS Identity and Access Management。
如果另一個帳戶位於同一地區,並已授予您許可,您可以將事件傳送至該帳戶。如需詳細資訊,請參閱在 Amazon 中的 AWS 帳戶之間傳送和接收事件 EventBridge。
如果您的目標已加密,您必須在KMS金鑰政策中包含下列區段。
{ "Sid": "Allow EventBridge to use the key", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }
AWS Batch 作為目標的任務佇列
某些 的 AWS Batch submitJob
參數可以透過 設定BatchParameters。
其他可以在事件裝載中進行指定。如果事件承載 (透過 或透過 傳遞InputTransformers) 包含下列金鑰,則它們會對應至submitJob
請求參數 :
ContainerOverrides: containerOverrides
注意
這僅包括命令、環境、記憶體和 vcpus
DependsOn: dependsOn
注意
這僅包括 jobId
Parameters: parameters
CloudWatch 將群組記錄為目標
如果您不InputTransformer搭配 CloudWatch Logs 目標使用 ,則會使用事件承載作為日誌訊息,並以事件來源作為時間戳記。如果您確實使用 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 呼叫 Incident Manager 的觸發詳細資訊。