本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立事件模式 EventBridge
若要建立事件模式,您必須指定要進行事件模式比對的事件欄位。僅指定用於比對的欄位。
例如,下列事件模式範例僅提供三個欄位的值:頂層欄位"source"
和"detail-type"
,以及"detail"
物件"state"
欄位內的欄位。 EventBridge套用規則時,會忽略事件中的所有其他欄位。
{
"source": ["aws.ec2"],
"detail-type": ["EC2 Instance State-change Notification"],
"detail": {
"state": ["terminated"]
}
}
若要事件模式匹配事件,該事件必須包含事件模式中所列的所有欄位名稱。欄位名稱也必須顯示在具有相同巢狀結構的事件中。
當您撰寫事件模式以符合事件時,可以使用TestEventPattern
API或命test-event-pattern
CLI令來測試模式是否符合正確的事件。如需詳細資訊,請參閱TestEventPattern。
相符事件值
在事件模式中,要匹配的值位於JSON數組中,由方括號(「[」,「]」)包圍,以便您可以提供多個值。例如,要匹配來自 Amazon 的事件 AWS Fargate,EC2或者,您可以使用以下模式,該模式與"source"
字段值為"aws.ec2"
或的事件相匹配"aws.fargate"
。
{
"source": ["aws.ec2", "aws.fargate"]
}
如需詳細資訊,請參閱匹配多個字段值。
在 Amazon EventBridge 事件模式中使用比較運算子
Amazon EventBridge 支援使用事件模式進行宣告式內容篩選。透過內容篩選功能,您可以撰寫複雜事件模式,並僅在非常特定的情況下符合事件。例如,您可以在下列情況下建立符合事件的事件模式:
-
事件的欄位位於特定數值範圍內。
-
該事件來自特定的 IP 地址。
-
特定欄位不存在於事件中JSON。
如需詳細資訊,請參閱比較運算子。
建立事件模式時的考量
以下是建構事件模式時需要考量的一些注意事項:
EventBridge 會忽略事件中未包含在事件模式中的欄位。其效果是,對於未出現在事件模式中的字段擁有一個
"*": "*"
萬用字元。事件模式匹配的值遵循JSON規則。您可以加入括在引號 (") 中的字串,、數字和關鍵字
true
、false
、null
。對於字符串, 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 行為,不應該依賴於不改變。