EventBridge -> Global Orchestration (Email)
Global Ruleset および Global Orchestration は Email Address を持っています。
- Rulesets: Are email integration filters/rules, or custom event transformers supported?
- Event Orchestration: Does Event Orchestration support email events?
導入
SNS Subscription では Email
または Email-JSON
で送信できるので、2パターン試します。
AWS SNS の Subscription に Global Orchestration の "Email Address" を Protocol "Email" または "Email-JSON" として指定します。
"AWS Notification - Subscription Confirmation" の件名でAlertが作成されるので、confirm を実施することで利用できるようになります。(ルールに合致しない状態ではインシデントは作成されません。)
この際、同一件名で Alert が Triggered (Suppressed)
の状態だとAlertも新規発行されず追加となります。
新規発行としたい場合はAlertもResolve(Resolve(Suppressed)
の状態)にしておく必要があります。
ルール(ルーティングルール)
利用できるfieldは以下になります。
> - event.custom_details.from[0](the from address) >> * The [0] refers to the 1st position in a list of emails. If you would like to generally search through a list of emails (either in the "to" field or the "from" field), please set to event.custom_details.from or event.custom_details.to. > > - event.custom_details.subject (the subject line) > - event.custom_details.plain_body (the email body)
TopicArn の形式などで Email, Email-JSON の判別もできます。
- 例
# Email `event.custom_details.subject` matches `AWS Notification Message` and `event.custom_details.plain_body` matches part `?SubscriptionArn=arn:aws:sns:ap-northeast-1:123456789012:example-aws-to-pd-eventbridge:` # Email-JSON `event.custom_details.subject` matches `AWS Notification Message` and `event.custom_details.plain_body` matches part `"TopicArn" : "arn:aws:sns:ap-northeast-1:123456789012:example-aws-to-pd-eventbridge"`
インシデント
初期状態でのインシデントタイトルはメール件名で作成されます。
AWS Notification Message
詳細欄はメール本文です。 Email は Message の内容のみとなるので、 Email-JSON の方が若干情報量が多いです。
重複排除
Ruleの "Transformations" から変更します。
Transformations (サービスルール)
Transformationsを参考に出力内容を調整します。
Summary を TopicName と detail-type に変換、
また、都度インシデントを作成するため dedep_key に MessageId を設定します。
Message は JSON 文字列 となっているので正規表現で抜き出します。
- Define Custom Variable
Name | Regex | Source |
---|---|---|
topic_name | ^.*SubscriptionArn=(?:[^:]*:){5}([^:]*):.*$ |
event.custom_details.plain_body |
detail_type | ^.*"detail-type":"([^"]*)".*$ |
event.custom_details.plain_body |
message_id | ^.*"id":"([^"]*)".*$ |
event.custom_details.plain_body |
- Replace Event Field
Event Field (CEF) | Value |
---|---|
summary | Email [{{variables.topic_name}}] {{variables.detail_type}} |
dedup_key | {{variables.message_id}} |
Email-JSON
- Define Custom Variable
Name | Regex | Source |
---|---|---|
topic_name | ^.*"TopicArn" : "(?:[^:]*:){5}([^"]*)".*$ |
event.custom_details.plain_body |
detail_type | ^.*"Message" : ".*"detail-type\\":\\"([^\\]*)\\".*$ |
event.custom_details.plain_body |
message_id | ^.*"MessageId" : "([^"]*)".*$ |
event.custom_details.plain_body |
- Replace Event Field
Event Field (CEF) | Value |
---|---|
summary | Email-JSON [{{variables.topic_name}}] {{variables.detail_type}} |
dedup_key | {{variables.message_id}} |
インシデント(変換後)
Summary が変換されたことを確認できます。
dedup_key を指定したことにより、インシデントがTriggeredの状態で残っている状態で再度同一イベントが発生した場合にも、インシデントが作成されます。
- Email
- Email-JSON