LoginSignup
1
1

More than 1 year has passed since last update.

AWS Health APIを活用する

Posted at

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 の概念より

「アカウント固有のイベント」と「パブリックイベント」がある

どんなイベントを取得できるのか

イベントタイプ一覧にあるものが取得できるイベント

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にNOTIFICATIONNOTICEとつく
  • 問題
    • codeにISSUEとつく
  • 予定された変更
    • codeにMAINTENANCESCHEDULEDとつく

対応サービス一覧

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が活用できそうです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1