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

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

Amazon EventBridge 中的事件匯流排目標

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

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

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

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

目標參數

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

注意

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

  • 點符號 (例如 $.detail)

  • 破折號

  • 底線

  • 英數字元

  • 陣列索引

  • 萬用字元 (*)

  • 正斜線

動態路徑參數

動態路徑參數可讓您使用 JSON 路徑語法在執行時間參考事件資料,而非靜態值。

您可以使用動態 JSON 路徑語法搭配目標參數來指定 JSON 路徑,而不是靜態值 (例如 $.detail.state)。

要求

整個值必須是 JSON 路徑,而不只是其中的一部分。例如:

  • ✓ 正確:RedshiftParameters.Sql可以是 $.detail.state

  • ✗ 不正確:RedshiftParameters.Sql不能是 "SELECT * FROM $.detail.state"

EventBridge 會在執行時間將這些路徑取代為指定路徑上事件承載的資料。

限制

動態路徑參數無法參考來自輸入轉換的新值或轉換值。JSON 路徑語法與輸入轉換語法相同。如需詳細資訊,請參閱 Amazon EventBridge 輸入轉換

支援的參數

您可以在這些參數的所有字串、非列舉欄位上使用動態語法:

許可

若要對您擁有的資源進行 API 呼叫,EventBridge 需要適當的許可。使用 EventBridge 主控台或在 中設定 RoleARN 參數來指定 IAM 執行角色PutTargets

例如,下列政策會定義傳送訊息至 Amazon SQS 佇列的許可:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sqs:SendMessage" ], "Resource": [ "arn:aws:sqs:us-east-1:111122223333:sqs-queue-name" ] } ] }

而下列信任政策可讓 EventBridge 擔任該角色:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

您可以調用具有已設定 IAM 授權的 API Gateway 端點,但如果您尚未設定授權,則該角色為選用角色。如需詳細資訊,請參閱 Amazon EventBridge 和 AWS Identity and Access Management

如果另一個帳戶位於同一地區,並已授予您許可,您可以將事件傳送至該帳戶。

如需詳細資訊,請參閱在 Amazon EventBridge 中的 AWS 帳戶之間傳送和接收事件

如果您的目標,例如 Amazon SQS 佇列,使用 AWS Key Management Service (AWS KMS) 加密,您必須在 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 Logs 群組做為目標

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

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

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

CodeBuild 專案作為目標

EventBridge 支援標準和批次建置做為目標。

如果您使用輸入轉換器來塑造來源事件,使其在交付至 CodeBuild 目標之前符合 StartBuildRequest 結構,參數將依codeBuild.StartBuild預設對應 1 對 1,並傳遞至 。

若要改為將參數傳遞至 codeBuild.StartBuildBatch,請轉換來源事件以符合 StartBuildBatchRequest 結構,並將下列金鑰/值對新增至轉換事件的根目錄:

"buildType": "BATCH"

Amazon ECS 任務做為目標

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

Incident Manager 回應計畫作為目標

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

Systems Manager 執行命令做為目標

當您指定 Systems Manager Run Command 做為目標時,EventBridge 會代表您呼叫 SendCommand API。使用 設定目標RunCommandParameters,指定要執行的 SSM 文件和目標執行個體或標籤。

RunCommandParameters 包含下列欄位:

  • RunCommandTargets — (必要) 指定目標執行個體的鍵值對清單。將 Key設定為 InstanceIds 搭配執行個體 IDs 清單,或將 Key設定為 tag:tag-name 搭配標籤值,依標籤將執行個體設為目標。您可以指定 1 到 5 個執行命令目標。

若要指定要執行哪些 SSM 文件並將其傳遞參數,請使用 Target 物件上的 Input 欄位。此Input值必須是具有下列結構的 JSON 物件:

{ "DocumentName": "document-name", "DocumentVersion": "version", "Parameters": { "parameter-key": ["parameter-value"] } }

其中:

  • DocumentName — 要執行之 SSM 文件的名稱或 ARN。

  • DocumentVersion — (選用) 文件的版本。如果省略,則會使用預設版本。

  • Parameters — (選用) 參數名稱與值陣列的映射,符合 SSM 文件中定義的參數。

例如,下列 AWS CLI 命令會建立規則,當 EventBridge 事件相符時,在特定執行個體上執行AWS-RunShellScript文件:

aws events put-targets --rule "my-rule" --targets '[{ "Id": "ssm-target-1", "Arn": "arn:aws:ssm:region:account-id:document/AWS-RunShellScript", "RoleArn": "arn:aws:iam::account-id:role/EventBridgeSSMRole", "Input": "{\\"Parameters\\":{\\"commands\\":[\\"echo Hello from EventBridge\\"]}}", "RunCommandParameters": { "RunCommandTargets": [{ "Key": "InstanceIds", "Values": ["i-0123456789abcdef0"] }] } }]'
注意

Target 物件上的 Input 欄位用於將文件名稱和參數傳遞至 Systems Manager Run Command。這與 不同InputTransformer,它會轉換事件承載。使用 Systems Manager Run Command 做為目標時,請在 中設定文件參數,Input並在 中指定目標執行個體RunCommandParameters

Amazon SQS 佇列做為目標

EventBridge 不支援使用使用 加密的 Amazon SQS 佇列 AWS 擁有的金鑰。這包括目標,以及指定為目標無效字母佇列的 Amazon SQS 佇列。如需詳細資訊 AWS 擁有的金鑰,請參閱《 AWS Key Management Service 開發人員指南》中的AWS 擁有的金鑰