[アップデート] AWS Fault Injection Simulator でシナリオライブラリを使って手軽に複雑な障害シナリオを導入することが出来るようになりました

2023.11.08

いわさです。

AWS Fault Injection Simulator (AWS FIS) は AWS 上でカオスエンジニアリングを行うためのマネージドサービスです。

今朝のアップデートで AWS FIS に新しくシナリオライブラリという機能が追加されました。

通常 AWS FIS では、ユーザーが実験テンプレートで発生させたい障害アクションなど細かい設定を行います。
FIS は簡単に障害テストを定義出来るサービスではあるのですが、それでも複雑なシナリオテストを行おうとすると少し設定が手間になります。

今回登場したシナリオライブラリには、様々なユースケースを想定して AWS が事前に作成したシナリオが提供されています。
ユーザーは提供されているシナリオを使って実験テンプレートを作ることが出来るようになりました。
シナリオには事前に複数のアクションやターゲットなど実験テンプレート上のコンポーネントがプリセットされており、複雑なシナリオテストをすぐに開始することが出来ます。

シナリオライブラリで提供されているシナリオを使って実験テンプレートを作成する

AWS FIS のサイドメニューに新たに「シナリオライブラリ」というメニューが追加されました。
本日時点では 10 個のシナリオが提供されていました。
このシナリオは AWS から提供されているものとなります。ユーザーがカスタマイズしたシナリオを登録する機能は無いようです。需要はありそうですけど。

使い方ですが、シナリオを選択するとシナリオの詳細情報が表示されるのでまずは内容を確認します。
特に前提条件やデフォルト設定には目を通しおいたほうが良いです。

例えば選択している「EC2 Stress - CPU」シナリオでは前提条件として EC2 に SSM エージェントがインストール済みである必要があります。
またシナリオ全体の実行時間が 15 分であることがわかります。

コンテンツタブではシナリオで作成される想定の実験テンプレートの内容をコードで確認することが出来ます。
詳細なパラメータを確認したり、あるいは独自のテンプレートをコードベースで作成したいときにはこのあたりを参考に出来そうです。

シナリオライブラリで使いたいシナリオを選択して「シナリオ使用してテンプレートを作成」ボタンを押すと、選択したシナリオの内容を引き継いだ状態で実験テンプレートが展開されます。
実験テンプレートで作成しようとしているアクションを確認してみると 5 分間ごとに段階的(80% → 90% → 100%)な CPU ストレスアクションが順次実行されるような内容となっています。

シナリオを使う上で特に確認したほうが良い点ですが、ターゲット設定を必ず確認してください。
ターゲット条件もシナリオによって事前に設定されています。
今回選択した「EC2 Stress - CPU」シナリオの場合はリソースタグに基づく全ての EC2 がターゲットになっています。
意図しない運用中 EC2 に障害が発生してしまわないよう、ターゲット周りは特に慎重に確認と設定を行いましょう。

あるいは、シナリオ内ではパラメータが使われているので、実験テンプレートにて「共有パラメータを編集」からカスタマイズして実験テンプレートに適用することが出来ます。

例えば EC2 Stress - CPU の場合であれば段階的な CPU 負荷の CPU 使用率やターゲットタグの情報をカスタマイズすることが出来ます。良いですね。

実験テンプレートへのシナリオ展開以降は従来どおり

実験テンプレートを作成した後は、後は従来どおりに実験を開始するだけです。

対象のタグを設定した EC2 インスタンスのみ、段階的な CPU 負荷が発生していることが確認出来ました。

さいごに

本日は AWS Fault Injection Simulator でシナリオライブラリを使って手軽に複雑な障害シナリオを導入することが出来るようになったので機能を確認し実際に使ってみました。

AWS FIS として新しいことが出来るようになったというよりも複雑なテストを定義するときにちょっと楽になった。というアップデートですね。別に使わなくても AWS FIS 自体は使えますけど、頻繁に実施する内容がシナリオに含まれていればちょっと便利になる感じです。

本日時点ではまだ提供されるシナリオの数が多くないのですが、今後より複雑なシナリオが充実してくると使う機会が多くなりそうですね。