建立事件模式 EventBridge - Amazon EventBridge

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

建立事件模式 EventBridge

若要建立事件模式,您必須指定要進行事件模式比對的事件欄位。僅指定用於比對的欄位。

例如,下列事件模式範例僅提供三個欄位的值:頂層欄位"source""detail-type",以及"detail"物件"state"欄位內的欄位。 EventBridge套用規則時,會忽略事件中的所有其他欄位。

{ "source": ["aws.ec2"], "detail-type": ["EC2 Instance State-change Notification"], "detail": { "state": ["terminated"] } }

若要事件模式匹配事件,該事件必須包含事件模式中所列的所有欄位名稱。欄位名稱也必須顯示在具有相同巢狀結構的事件中。

當您撰寫事件模式以符合事件時,可以使用TestEventPatternAPI或命test-event-patternCLI令來測試模式是否符合正確的事件。如需詳細資訊,請參閱TestEventPattern

相符事件值

在事件模式中,要匹配的值位於JSON數組中,由方括號(「[」,「]」)包圍,以便您可以提供多個值。例如,要匹配來自 Amazon 的事件 AWS Fargate,EC2或者,您可以使用以下模式,該模式與"source"字段值為"aws.ec2"或的事件相匹配"aws.fargate"

{ "source": ["aws.ec2", "aws.fargate"] }

如需詳細資訊,請參閱匹配多個字段值

在 Amazon EventBridge 事件模式中使用比較運算子

Amazon EventBridge 支援使用事件模式進行宣告式內容篩選。透過內容篩選功能,您可以撰寫複雜事件模式,並僅在非常特定的情況下符合事件。例如,您可以在下列情況下建立符合事件的事件模式:

  • 事件的欄位位於特定數值範圍內。

  • 該事件來自特定的 IP 地址。

  • 特定欄位不存在於事件中JSON。

如需詳細資訊,請參閱比較運算子

建立事件模式時的考量

以下是建構事件模式時需要考量的一些注意事項:

  • EventBridge 會忽略事件中未包含在事件模式中的欄位。其效果是,對於未出現在事件模式中的字段擁有一個 "*": "*" 萬用字元。

  • 事件模式匹配的值遵循JSON規則。您可以加入括在引號 (") 中的字串,、數字和關鍵字 truefalsenull

  • 對於字符串, EventBridge 使用精確 character-by-character 匹配而不折疊大小寫或任何其他字符串規範化。

  • 對於數字, EventBridge 使用字符串表示。例如,300、300.0 和 3.0e2 不會被視為相等。

  • 如果為同一JSON欄位指定了多個模式,則 EventBridge 僅使用最後一個模式。

  • 請注意,當 EventBridge 編譯事件模式以供使用時,它會使用 dot (.) 作為連接字元。

    這表示 EventBridge 會將下列事件模式視為相同:

    ## has no dots in keys { "detail" : { "state": { "status": [ "running" ] } } } ## has dots in keys { "detail" : { "state.status": [ "running" ] } }

    並且這兩種事件模式都將符合以下兩個事件:

    ## has no dots in keys { "detail" : { "state": { "status": "running" } } } ## has dots in keys { "detail" : { "state.status": "running" } }
    注意

    這描述了當前的 EventBridge 行為,不應該依賴於不改變。

  • 包含重複欄位的事件模式無效。如果樣式包含重複的欄位,則 EventBridge 僅考慮最終欄位值。

    例如,以下事件模式將匹配相同的事件:

    ## has duplicate keys { "source": ["aws.s3"], "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["s3.amazonaws.com"], "eventSource": ["sns.amazonaws.com"] } } ## has unique keys { "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["sns.amazonaws.com"] } }

    並 EventBridge 將以下兩個事件視為相同:

    ## has duplicate keys { "source": ["aws.s3"], "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": [ { "eventSource": ["s3.amazonaws.com"], "eventSource": ["sns.amazonaws.com"] } ] } ## has unique keys { "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": [ { "eventSource": ["sns.amazonaws.com"] } ] }
    注意

    這描述了當前的 EventBridge 行為,不應該依賴於不改變。