Amazon RDSの各種イベントをEventBridgeで拾う時の話
マネコンでぽちぽちやると、RDSのイベントはEvent Typeまでしか選択できなくて、Event Nameを指定できない。
まぁこれはイベントパターンに書き足してあげればいい。
{
"source": ["aws.rds"],
"detail-type": ["RDS DB Instance Event"]
"detail.EventID": ["ここにEventIDを"]
}
EventNameではなくて、EventIDなので注意。
手動でのSnapShot作成開始と作成完了の場合はこんな感じ。
{
"source": ["aws.rds"],
"detail-type": ["RDS DB Snapshot Event"],
"detail.EventID": ["RDS-EVENT-0040", "RDS-EVENT-0042"]
}
RDS-EVENT-0040
が 手動でのSnapShot作成開始、 RDS-EVENT-0042
が手動でのSnapShot作成完了。自動の時とIDが違うのも注意。てかなんでIDなん?
イベントIDのリストは以下にある。
detail.Message
も使えるが一覧はなさそう。上記のページを英語で表示した時のイベント一覧のDescriptionに期待したが全然違った。残念。というわけで、今回ざっくりやってみた時にゲットできたMessageをリスト化した。
イベント | EventID | Message |
---|---|---|
手動でのSnapShot作成開始 | RDS-EVENT-0040 | Creating manual snapshot |
手動でのSnapShot作成完了 | RDS-EVENT-0042 | Manual snapshot created |
手動でのSnapShot削除完了 | RDS-EVENT-0041 | Deleted manual snapshot |
ちなみにイベントは以下のような感じ。
{
"version": "0",
"id": "57a935b5-f661-b2ad-2bb3-88f92c44d3b5",
"detail-type": "RDS DB Snapshot Event",
"source": "aws.rds",
"account": "XXXXXXXXXXXX",
"time": "2022-05-28T18:10:52Z",
"region": "ap-northeast-1",
"resources": [
"arn:aws:rds:ap-northeast-1:XXXXXXXXXXXX:snapshot:test3"
],
"detail": {
"EventCategories": [
"creation"
],
"SourceType": "SNAPSHOT",
"SourceArn": "arn:aws:rds:ap-northeast-1:XXXXXXXXXXXX:snapshot:test3",
"Date": "2022-05-28T18:10:52.801Z",
"Message": "Creating manual snapshot",
"SourceIdentifier": "test3",
"EventID": "RDS-EVENT-0040"
}
}
ちなみにCloudTrailの証跡のEventRecordはこんな感じ
{
"eventVersion": "1.08",
"userIdentity": {
"type": "Root",
"principalId": "XXXXXXXXXXXX",
"arn": "arn:aws:iam::XXXXXXXXXXXX:root",
"accountId": "XXXXXXXXXXXX",
"accessKeyId": "XXXXXXXXXXXXXXXXXXXXXXXX",
"sessionContext": {
"sessionIssuer": {},
"webIdFederationData": {},
"attributes": {
"creationDate": "2022-05-28T16:34:08Z",
"mfaAuthenticated": "true"
}
}
},
"eventTime": "2022-05-28T18:10:26Z",
"eventSource": "rds.amazonaws.com",
"eventName": "CreateDBSnapshot",
"awsRegion": "ap-northeast-1",
"sourceIPAddress": "AWS Internal",
"userAgent": "AWS Internal",
"requestParameters": {
"dBInstanceIdentifier": "XXXXXXXXXXXX",
"dBSnapshotIdentifier": "test3"
},
"responseElements": {
"allocatedStorage": 20,
"instanceCreateTime": "Apr 18, 2021 10:20:41 PM",
"dBSnapshotIdentifier": "test3",
"dbiResourceId": "db-XXXXXXXXXXXXXXXXXXXXXXXX",
"port": 5432,
"availabilityZone": "ap-northeast-1c",
"dBSnapshotArn": "arn:aws:rds:ap-northeast-1:XXXXXXXXXXXX:snapshot:test3",
"processorFeatures": [],
"encrypted": false,
"percentProgress": 0,
"optionGroupName": "default:postgres-12",
"tagList": [
{
"value": "その他",
"key": "workload-type"
}
],
"dBInstanceIdentifier": "XXXXXXXXXXXX",
"storageType": "gp2",
"iAMDatabaseAuthenticationEnabled": false,
"vpcId": "vpc-XXXXXXXXXXXX",
"status": "creating",
"masterUsername": "XXXXXXXXXXXX",
"engine": "postgres",
"snapshotType": "manual",
"engineVersion": "12.8",
"licenseModel": "postgresql-license",
"snapshotTarget": "region"
},
"requestID": "bcd80ddd-59de-45ba-b3c7-294659f3e6ae",
"eventID": "9829f59b-14d9-4653-ade5-3e8c047457a7",
"readOnly": false,
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "XXXXXXXXXXXX",
"eventCategory": "Management",
"sessionCredentialFromConsole": "true"
}
CloudTrailは EventName
である。
作成開始と作成終了と分かれておらず、時間的に開始時に記録される模様。何をしたかだけだから、終わったかどうかは証跡的には関係ないってことかな?
何が言いたいかというと、RDSのイベント名(IDだけど)は視認性の高いものにしてくれってことです(
他にもこんな感じのサービスあるんかな。
追記:
ここを軽く眺めてみたところ、そもそもイベントに EventName
が含まれているイベントが少なそうだった。このページ内に記載されている例だけだと、AWS Management Console サインインイベント
しか見当たらない。と思ったがこれはCloudTrailでした。EventName
ではなくて、RDS的な EventID
に至っては皆無である。
もっといろいろ調べてみようかと思ったけど、キリがなさそうなんでそのうち。。
さらに追記:
EventBridgeの方にも一覧あるのでこっちの方がいいか。
Discussion