🐈

AWSの障害やメンテナンスを通知して自動で対応したい

2024/01/14に公開

はじめに

この記事はDevOps on AWS大全 実践編の一部です。
DevOps on AWS大全 実践編の一覧はこちら

この記事ではAWSの障害やメンテナンスを通知して自動で対応するアーキテクチャを決める流れを解説しています。

具体的には以下流れで説明します。

  • 解決したい課題の整理
  • 今回使うAWSサービスの整理
  • アーキテクチャの策定
  • 策定したアーキテクチャで達成できたこと

AWSの区分でいう「Level 400 : 複数のサービス、アーキテクチャによる実装でテクノロジーがどのように機能するかを解説するレベル」の内容です。

この記事を読んでほしい人

  • DevOpsエンジニアがアーキテクチャを決めるときにどのような思考フローを踏んでいるか知りたい人
  • AWSの障害やメンテナンスを通知して自動で対応するアーキテクチャを知りたい人
  • AWS Certified DevOps Engineer Professionalを目指している人

前回までの流れ

こちらの記事でAWSであらゆるものをモニタリングするアーキテクチャを策定しました。

解決したい課題の整理

現在、解決したいと思っている課題は以下になります。

  • AWSの障害やメンテナンスが告知されたらチャットへの通知したい
  • アカウント状態が健全ではなくなったら自動対応したい

ということで、これをどうやって解決するか考えていきましょう。

今回使うAWSサービスの整理

今回使う代表的なAWSサービスの概要とベストプラクティスは以下の通りです。

AWS Health Dashboard

AWS Health Dashboardは、AWSのサービスのステータスやイベント情報をリアルタイムで提供するサービスです。
AWSユーザーはこのダッシュボードを通じて、サービスの健全性やパフォーマンスに関する情報を把握できます。
AWS Health Dashboardで得られる情報には、サービスの障害、予定されたメンテナンス、およびその他の健康状態に関する通知が含まれます。

なお、AWS Health DashboardにはService HistoryとYour Accountの2つの区分が存在します。

Service Historyはすべてのリージョン、すべてのサービスのサービス状況を一覧で見ることができます。
いわゆる大規模障害の時に情報が更新されるのがService Historyです。

一方、Your Accountは以前までPersonal Health Dashboardと呼ばれていたサービスです。
今でも検索するとPersonal Health Dashboardで出てくるAWS公式ページがありますが、正式にはAWS Healthの中のDashboardに統合されています。

Your Accountは自アカウントに影響のあるアラートが表示されます。
例えばEC2インスタンスのリタイアメント通知やLambdaのランタイムサポート切れなどが通知されます。

ベストプラクティス

以下は、このサービスを使用する際のベストプラクティスです。

ベストプラクティス 説明
Service HistoryとYour Accountを両方確認する Your Accountでは、AWSアカウントに影響を与えるイベントや通知だけが表示されます。一方、Service Historyでは、AWSのサービス全体の稼働状況や障害情報が表示されます。したがって、両方のダッシュボードを確認することで、AWSのサービスに関する問題をより正確に把握することができます。
通知設定を有効にする AWS Personal Health Dashboardでは、イベントや通知が発生した場合にメールやSMSで通知を受け取ることができます。この機能を有効にすることで、問題に早期に気づき、迅速に対応することができます。通知設定は、AWSコンソールのPersonal Health DashboardのPreferencesから行うことができます。
APIやRSSフィードを利用する Your AccounとService Historyでは、それぞれPersonal Health APIとService Health APIを利用してプログラムからもアクセスできます。また、Service Historyでは、RSSフィードを購読して稼働状況や障害情報を受け取ることもできます。これらの機能を利用することで、AWS Health Dashboardの情報を自動化したり、他のシステムやツールと連携したりすることができます。

アーキテクチャの策定

ここからはやりたいことを順番に考えながらアーキテクチャを策定していきます。

AWS Health Dashboardが更新されたときに通知してほしい

1つめのやりたいことはAWS Health Dashboardが更新されたときに通知してほしい、というものです。

AWS Health DashboardはAmazon EventBridgeと連携することが可能です。
そのため、自アカウントに影響のある通知が来た際やリージョン障害が発生した際にEventBridge経由でLambdaを発火させ、チャットへ通知することができます。

ベストプラクティスは自動で通知に対する対応まで完了させることですが実プロジェクトでは報告して、対策を決定して、という場面も多くあります。
そこで、まずは通知を自動で受け取れるようにすることが大切です。

これらをまとめると以下のようなアーキテクチャになります。

AWS Health Dashboardが更新されたときに自動対応してほしい

もう1つのやりたいことは自動での対応です。
例えばIAMのアクセスキーが流出した場合には自動でアクセスキーを削除すべきですし、EC2インスタンスのリタイアメント通知が来たら自動でメンテナンスウインドウ内の再起動を実施すべきです。

これらをまとめると以下のようなアーキテクチャになります。

まとめ

本記事ではAWSであらゆるものをモニタリングするアーキテクチャをまとめました。

今回策定したアーキテクチャで実現できたのは以下の項目です。

  • AWS Health Dashboardが更新されたときにチャットへの通知
  • AWS Health Dashboardが更新されたときに自動対応

次回はセキュリティ対策を考えてみたいと思います。

Discussion