AWS Resilience Hub で CloudFormation や Terraform を使わずに EKS 以外のアプリケーションを管理してみた

2023.09.05

いわさです。

先日 AWS Resilience Hub を初めて触ったのですが、これはとてもおもしろいですね。
あまり使われている印象が無いけど実は活用シーンがだいぶ多いサービスなのではと思ってます。

そんな Resilience Hub ですが、使う前は「IaC が前提でしょ?手動の場合も EKS のみか?」などと思っていました。
実際に使ってみると IaC は関係なくて CloudFormation 利用などの前提もなく、マネジメントコンソールで手動作成したリソースも管理可能です。

本日は次のように手動で RDS のシングル AZ インスタンスを作成してみましたので、こちらを使って AWS Resilience Hub からレコメンデーションを取得出来るのかを確認してみたいと思います。

アプリケーションとしてリソースコレクションか EKS を指定出来る

Resilience Hub ではアセスメントを行う複数のリソースを「アプリケーション」として管理対象に追加して評価対象のグループとして使用します。
選択出来るアプリケーションは次の例として記載されている CloudFormation スタック / Terraform ステートファイル / AppRegistry アプリケーションの「リソースコレクション」か Amazon EKS クラスターを選択することが出来ます。

今回は EKS 以外のリソースを使いたいので前者のリソースコレクションを使う形になると思います。
しかし上記の例はどれも IaC テンプレートでリソース群を管理する必要が出てきそうな雰囲気があります。

ここで気を落としかけたのですが、リソースコレクションを追加してみようとすると上記の例には記述のない「リソースグループ」も選択することが出来ます。

リソースグループはタグを使ってリソースをグループ管理出来る機能です。
これ、手動作成したリソースでもタグ付け運用がうまく出来ていればリソースグループを使って Resilience Hub で活用出来るのではないか。

リソースグループで手動作成リソースを管理

リソースグループを作成するために、対象リソース (RDS インスタンス) にタグを設定します。

AWS Resource Groups で新規リソースグループを作成します。
先程指定したタグを指定し、タグベースでリソースを管理出来るようにしました。

リソースグループを作成することが出来たら、Resilience Hub で新規アプリケーションを作成します。
リソースコレクションとして先程作成したリソースグループを指定します。

ポリシーは要件にあわせて選択するところなので何でも良いのですが、今回は以前作成したミッションクリティカルな適当なやつを設定しました。

ここまででアプリケーションが作成出来ますので、アプリケーションを発行後に評価を実行しましょう。

アセスメントレポートを確認してみるとアプリケーションコンポーネントとして RDS インスタンスが認識されており、耐障害性に関するレコメンデーションを確認することが出来ました。
Aurora への移行や、別の AZ でのリードレプリカ展開などを提案されていますね。

なお、タグで管理出来ないリソース(Route 53 や API Gateway)については、マネジメントコンソールから対象アプリケーションに直接リソースを追加することが出来ます。
一通りのリソースを管理することが出来ると考えて良いでしょう。

さいごに

本日は AWS Resilience Hub で CloudFormation や Terraform を使わずに EKS 以外のアプリケーションを管理してみました。
リソースグループを活用することで IaC 以外で作成・管理されているリソースも Resilience Hub で使うことを確認出来ましたね。

Resilience Hub では耐障害性やシステムの回復力に関しての過不足を可視化したり、あるいは耐障害性以外にオペレーションに関するレコメンデーションを取得したり、フワッとした RTO/RPO を管理することが出来ます。
あまりまだ積極的に使われているシーンを見ないですが、今回のようにリソースグループを活用することで色々なリソースを対象にすることが出来ますのでぜひ使ってみてください。