vague memory

うろ覚えを無くしていこうともがき苦しむ人の備忘録

AWS から PagerDuty への通知連携(11)

Event API v2

番外編です。
APIを直接実行する事で、任意のイベントを送信できます。

Global Orchestration、Global Ruleset、Service それぞれに対して送信できます。



導入

受信側(PagerDuty)

利用する機能の Integration Key を取得します。 Endpoint は同一の https://events.pagerduty.com/v2/enqueue です。

Global Orchestration の場合

f:id:htnosm:20220415053833p:plain

適宜 Routing Rule と Action Rule を追加します。 例として、送信側で source に TopicArn を設定するようにし、判別できるようにしています。

f:id:htnosm:20220415053837p:plain

Global Rulesets の場合

f:id:htnosm:20220415053841p:plain

適宜 Event Rule を追加します。 例として、送信側で source に TopicArn を設定するようにし、判別できるようにしています。

f:id:htnosm:20220415053846p:plain

Service の場合

"Events API v2" インテグレーションを使用します。 DEVELOPER PLATFORM の "Events API v2 Overview" に設定方法が記載されています。

f:id:htnosm:20220415053850p:plain

指定できるオプションはありません。

f:id:htnosm:20220415053855p:plain

送信側(AWS)

API Reference を参考に送信処理を実装します。

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
    • f:id:htnosm:20220415053859p:plain
  • Lambda Function
    • f:id:htnosm:20220415053904p:plain

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 でインシデントが作成されます。

f:id:htnosm:20220415053909p:plain

重複排除

$payload.dedup_key で指定します。