😽

Amazon RDSの各種イベントをEventBridgeで拾う時の話

2022/05/29に公開

マネコンでぽちぽちやると、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のリストは以下にある。

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_Events.Messages.html

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だけど)は視認性の高いものにしてくれってことです(

他にもこんな感じのサービスあるんかな。

追記:

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/events/EventTypes.html

ここを軽く眺めてみたところ、そもそもイベントに EventName が含まれているイベントが少なそうだった。このページ内に記載されている例だけだと、AWS Management Console サインインイベント しか見当たらない。と思ったがこれはCloudTrailでした。EventName ではなくて、RDS的な EventIDに至っては皆無である。

もっといろいろ調べてみようかと思ったけど、キリがなさそうなんでそのうち。。

さらに追記:

EventBridgeの方にも一覧あるのでこっちの方がいいか。

https://docs.aws.amazon.com/ja_jp/eventbridge/latest/userguide/eb-service-event.html

Discussion