AWS から PagerDuty への通知連携(11)
Event API v2
番外編です。
APIを直接実行する事で、任意のイベントを送信できます。
- PagerDuty DEVELOPER PLATFORM
- Events API v2 -> Sending an Alert Event -> Send an Alert Event
Global Orchestration、Global Ruleset、Service それぞれに対して送信できます。
導入
受信側(PagerDuty)
利用する機能の Integration Key を取得します。
Endpoint は同一の https://events.pagerduty.com/v2/enqueue
です。
Global Orchestration の場合
適宜 Routing Rule と Action Rule を追加します。 例として、送信側で source に TopicArn を設定するようにし、判別できるようにしています。
Global Rulesets の場合
適宜 Event Rule を追加します。 例として、送信側で source に TopicArn を設定するようにし、判別できるようにしています。
Service の場合
"Events API v2" インテグレーションを使用します。 DEVELOPER PLATFORM の "Events API v2 Overview" に設定方法が記載されています。
指定できるオプションはありません。
送信側(AWS)
API Reference を参考に送信処理を実装します。
- API References
- PagerDuty V2 Events API -> Send Event -> Send an event to PagerDuty
Python の場合、標準ライブラリとRequests利用の2パターン例示されています。
- 例
import http.client conn = http.client.HTTPSConnection("events.pagerduty.com") payload = "{...}" headers = { 'Content-Type': "application/json" } conn.request("POST", "/v2/enqueue", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
今回は SNS -> Lambda Function で連携します。
- SNS Topic Subscription
- Lambda Function
API Limits
DEVELOPER PLATFORM の "Events API v2 Overview" に記載されています。
Rate Limits の制限値は明記されていません。 制限超過した場合、 StatusCode: 429 (Too Many Requests) を返却するので、必要に応じてリトライを実施しなさいとのことです。
Size Limits は 512 KB です。
インシデント
API実行時に指定した $payload.summary
、$.payload.custom_details
でインシデントが作成されます。
重複排除
$payload.dedup_key
で指定します。