AWS Health APIとは
AWS Personal Health Dashboardに通知されるイベント情報を取得するAPIです。
AWS Personal Health Dashboardに通知されるAWS Health イベント(メンテナンス情報、障害情報、etc...)の様々な情報をAWS Health APIで取得してみました。
AWS Health イベントとは
AWS Health イベントは Health イベントとも呼ばれ、AWS Health が他の AWS サービスの代わりに送信する通知です。これらのイベントを使用して、アカウントに影響する可能性のある今後の変更や予定された変更について知ることができます。
「アカウント固有のイベント」と「パブリックイベント」がある
どんなイベントを取得できるのか
イベントタイプ一覧にあるものが取得できるイベント
AWS Health API DescribeEventTypesでイベントタイプ一覧を取得できます。
aws health describe-event-types --region us-east-1 > types.json
※ AWS Health APIのエンドポイントはus-east-1
のみ
-DescribeEventTypesオペレーションは、オプションで指定されたフィルターと一致するイベントタイプを取得します。イベントタイプは、イベントに関する AWS のサービス、イベントタイプコード、およびカテゴリのテンプレート定義です。イベントタイプとイベントは、オブジェクト指向プログラミングのクラスとオブジェクトに似ています。AWS Health でサポートされるイベントタイプの数は、時間とともに増えます。
AWS Health でサポートされているオペレーションより
なのでドキュメントに一覧は載っていません。各自APIで確認が必要です。
対応しているイベントタイプ一覧
cat types.json | jq '[.eventTypes[].code] | unique'
イベントタイプのカテゴリ
以下の3種に分かれています。
- アカウント通知
- codeに
NOTIFICATION
やNOTICE
とつく
- codeに
- 問題
- codeに
ISSUE
とつく
- codeに
- 予定された変更
- codeに
MAINTENANCE
やSCHEDULED
とつく
- codeに
対応サービス一覧
cat types.json | jq '[.eventTypes[].service] | unique'
2022/12GAのCodeCatalyst
にもいくつかのイベントカテゴリが対応してました。
[
"A2I",
"A4B",
"ABUSE",
"ACCOUNT",
"ACM",
"ACMPRIVATECA",
"ACTIVATECONSOLE",
"AIRFLOW",
"AMPLIFY",
"AMPLIFYADMIN",
"AMPLIFYUIBUILDER",
"APIGATEWAY",
"APPCONFIG",
"APPFLOW",
"APPLICATIONINSIGHTS",
"APPLICATION_AUTOSCALING",
"APPMESH",
"APPRUNNER",
"APPSTREAM",
"APPSTREAM2",
"APPSYNC",
"APS",
"ATHENA",
"AUDITMANAGER",
"AUTOSCALING",
"AWIS",
"BACKUP",
"BATCH",
"BILLING",
"BRAKET",
"CASSANDRA",
"CHATBOT",
"CHIME",
"CLEANROOMS",
"CLIENT_VPN",
"CLOUD9",
"CLOUDDIRECTORY",
"CLOUDFORMATION",
"CLOUDFRONT",
"CLOUDHSM",
"CLOUDSEARCH",
"CLOUDSHELL",
"CLOUDTRAIL",
"CLOUDWATCH",
"CLOUDWATCHSYNTHETICS",
"CODEARTIFACT",
"CODEBUILD",
"CODECATALYST",
"CODECOMMIT",
"CODEDEPLOY",
"CODEGURU_PROFILER",
"CODEGURU_REVIEWER",
"CODEPIPELINE",
"CODESTAR",
"CODEWHISPERER",
"COGNITO",
"COMPREHEND",
"COMPREHENDMEDICAL",
"COMPUTE_OPTIMIZER",
"CONFIG",
"CONNECT",
"CONSOLEMOBILEAPP",
"CONTROLTOWER",
"DATABREW",
"DATAEXCHANGE",
"DATAPIPELINE",
"DATASYNC",
"DAX",
"DEEPCOMPOSER",
"DEEPLENS",
"DEEPRACER",
"DETECTIVE",
"DEVICEFARM",
"DEVOPS-GURU",
"DIRECTCONNECT",
"DISCOVERY",
"DLM",
"DMS",
"DOCDB",
"DRS",
"DS",
"DYNAMODB",
"E2M",
"EBS",
"EBSONOUTPOSTS",
"EC2",
"ECR",
"ECR_PUBLIC",
"ECS",
"EKS",
"ELASTICACHE",
"ELASTICBEANSTALK",
"ELASTICFILESYSTEM",
"ELASTICLOADBALANCING",
"ELASTICMAPREDUCE",
"ELASTICTRANSCODER",
"ELEMENTAL",
"EMR_SERVERLESS",
"ES",
"EVENTS",
"EVENTS_SCHEDULER",
"EVIDENTLY",
"FARGATE",
"FINSPACE",
"FIREHOSE",
"FIS",
"FMS",
"FORECAST",
"FRAUDDETECTOR",
"FREERTOS",
"FSX",
"GAMELIFT",
"GAMESPARKS",
"GEO",
"GLACIER",
"GLOBALACCELERATOR",
"GLUE",
"GRAFANA",
"GREENGRASS",
"GROUNDSTATION",
"GUARDDUTY",
"HEALTH",
"HEALTHLAKE",
"IAM",
"IAMIDENTITYCENTER",
"IAMROLESANYWHERE",
"IMAGEBUILDER",
"IMPORTEXPORT",
"INFRASTRUCTUREPERFORMANCE",
"INSPECTOR",
"INSPECTOR2",
"INTERNETCONNECTIVITY",
"INTERNETMONITOR",
"INTERREGIONVPCPEERING",
"IOT",
"IOT1CLICK",
"IOTROBORUNNER",
"IOTTWINMAKER",
"IOT_ANALYTICS",
"IOT_DEVICE_ADVISOR",
"IOT_DEVICE_DEFENDER",
"IOT_DEVICE_MANAGEMENT",
"IOT_EVENTS",
"IOT_FLEETWISE",
"IOT_SITEWISE",
"IQ",
"IVS",
"KAFKA",
"KENDRA",
"KENDRA_RANKING",
"KINESIS",
"KINESISANALYTICS",
"KINESISSTREAMS",
"KINESIS_VIDEO",
"KMS",
"LAKEFORMATION",
"LAMBDA",
"LAUNCHWIZARD",
"LEX",
"LICENSE_MANAGER",
"LIGHTSAIL",
"LOCATION",
"LOOKOUTMETRICS",
"LOOKOUTVISION",
"MACHINELEARNING",
"MACIE",
"MAINFRAME_MODERNIZATION",
"MANAGEDBLOCKCHAIN",
"MANAGEMENTCONSOLE",
"MARKETPLACE",
"MEDIACONNECT",
"MEDIACONVERT",
"MEDIALIVE",
"MEDIAPACKAGE",
"MEDIASTORE",
"MEDIATAILOR",
"MEMORYDB",
"MGH",
"MGN",
"MIGRATIONHUBORCHESTRATOR",
"MIGRATIONHUBSTRATEGY",
"MOBILEANALYTICS",
"MOBILEHUB",
"MOBILETARGETING",
"MONITRON",
"MQ",
"MULTIPLE_SERVICES",
"NATGATEWAY",
"NEPTUNE",
"NETWORKFIREWALL",
"NETWORK_ACCESS_ANALYZER",
"NIMBLE",
"NOTIFICATIONS",
"OPSWORKS",
"OPSWORKS-CM",
"OPSWORKS_CHEF",
"OPSWORKS_PUPPET",
"ORGANIZATIONS",
"OUTPOSTS",
"PANORAMA",
"PERSONALIZE",
"POLLY",
"PRICING",
"PROTON",
"QLDB",
"QUICKSIGHT",
"RAM",
"RDS",
"REACHABILITY_ANALYZER",
"REDSHIFT",
"REFACTOR_SPACES",
"REKOGNITION",
"RESILIENCEHUB",
"RESOURCEEXPLORER",
"RESOURCE_GROUPS",
"RISK",
"ROBOMAKER",
"ROUTE53",
"ROUTE53APPRECOVERYCONTROLLER",
"ROUTE53DOMAINREGISTRATION",
"ROUTE53PRIVATEDNS",
"ROUTE53RESOLVER",
"RUM",
"S3",
"S3_OUTPOSTS",
"S3_REPLICATION_TIME_CONTROL",
"SAGEMAKER",
"SDB",
"SDK",
"SECRETSMANAGER",
"SECURITY",
"SECURITYHUB",
"SECURITYLAKE",
"SERVERLESSREPO",
"SERVICECATALOG",
"SERVICEDISCOVERY",
"SERVICEQUOTAS",
"SES",
"SHIELD",
"SIGNIN",
"SIMSPACEWEAVER",
"SMS",
"SNOWBALL",
"SNS",
"SQS",
"SSM",
"SSM-SAP",
"SSM_INCIDENTS",
"SSO",
"STATES",
"STORAGEGATEWAY",
"SUMERIAN",
"SUPPORTCENTER",
"SWF",
"TAG",
"TEXTRACT",
"TIMESTREAM",
"TNB",
"TRAFFICMIRRORING",
"TRANSCRIBE",
"TRANSFER",
"TRANSIT_GATEWAY",
"TRANSLATE",
"TRUSTEDADVISOR",
"VMIMPORTEXPORT",
"VPC",
"VPCE_PRIVATELINK",
"VPN",
"WAF",
"WELLARCHITECTED",
"WICKR",
"WORKDOCS",
"WORKMAIL",
"WORKSPACES",
"WORKSPACESWEB",
"XRAY"
]
取得できないイベントはあるのか?
あるみたいです。
https://qiita.com/shu85t/items/1352cc9375c59d7514d7
RDSのメンテナンス情報はその全てがメールやPHD(Personal Health Dashboard)に通知されるわけではありません(サポート確認済み)。そのようなものも把握したい場合は describe-pending-maintenance-actions コマンドで取得する方法があります。
実際にイベントを取得してみる
AWS Health API DescribeEventsでイベント一覧を取得できます。
aws health describe-events --region us-east-1 > events.json
filterで日時指定しないと、過去90日分まで取れます。
感想
APIを活用して取得→通知の仕組みなどに活用できそうです!
EventBridgeと統合されており、EventBridgeを使用したイベントのモニタリングもできるため、別で検証しようと思います。
EventBridgeでは、
アカウントに固有のAWS Healthイベントのみが配信されます
とあり、パブリックイベントの取得にはAWS Health APIの使用が必要そうです。
AWS Health は、ベストエフォートベースでイベントを配信します。イベントが常に EventBridge に配信されるとは限りません。
なので、これのカバーにもAWS Health APIが活用できそうです。