[アップデート] AWS FIS で実験テンプレートのターゲットをプレビュー出来るようになりました

2024.03.15

いわさです。

先日、AWS FIS (Fault Injection Service) に次のアップデートがありました。

ターゲットプレビューという機能が追加されました。
実験のターゲットリソースを事前にプレビューできるようになります。

何が嬉しいのか

私の推しサービスである AWS FIS ですが、観測範囲では AWS FIS はまだまだ使われてるとは言い難いと思ってまして、今回のアップデートで何が便利になるのかを理解するために、まずは従来の AWS FIS の流れをおさらいします。

AWS FIS では実験テンプレートを作成し、実験を実行します。この実験というのが障害シミュレーションテスト的なものを指しています。
実験テンプレートではどのリソースを対象にどういう障害を発生させるか、テストシナリオを定義します。
この「どのリソースか」という条件は、明示的にリソースを指定することも出来れば、タグや何かしらの条件を設定することも出来るので、シナリオによっては実験開始時までどのくらいのリソースが障害テストの影響を受けるのか把握することが出来ない場合があります。

今までは実験を開始するまでターゲットを把握出来なかったのですが、今回のアップデートによって実験を開始せずともどのリソースが対象なのか把握出来るようになりました。これは結構ありがたいですよ。

やってみよう

使い勝手を確認するために、実際に試してみましょう。

AWS FIS で適当な実験テンプレートを作成します。今回は東京リージョンを使っています。
EC2 インスタンスを再起動するような実験にしてみます。

リソース ID を指定

まずはシンプルにターゲットへ EC2 インスタンスを直接指定してみます。

実験テンプレートの作成後、ターゲットタブにてプレビュー情報を確認することが出来ます。

上段の「ターゲット」はおそらく以前から確認出来た情報でしょう。このテンプレートではターゲットにこの EC2 インスタンスが指定されているということがわかります。

今回追加されたのは下段の「Pewview」です。

初期状態だと何も表示されていない状態です。

ここで「Generate preview」ボタンを押します。
そうするとリソースの探索が開始されます。アップデートアナウンスによると、裏でアクションをスキップする実験が実行されているようです。今回であれば EC2 再起動アクションは実際には実行されませんが、ターゲットリソースの検索などはされるというわけですね。

少し(数秒)待機すると、プレビューの結果ステータスや更新時間、リソース数などとともに対象の EC2 インスタンスの情報がリストに表示されました。

また、リソース一覧は CSV ファイルとしてダウンロードすることも可能です。

リソースタグで指定

先ほどのテンプレートでは、テンプレートのターゲット内で直接 EC2 インスタンスを指定していたこともあり、あまりありがたみが無いのですが、今度はリソースタグなど別の条件でターゲットを指定してみましょう。有り難みがわかるはず。

テスト用の EC2 インスタンスには謎のタグがいくつか設定されていました。
この情報を使ってみます。

新しいテンプレートを作成し今度はターゲットで次のように「リソースタグ、フィルター、パラメータ」を選択しています。
今回はリソースタグだけ指定しますが、オプションでリソースフィルターを指定することも出来ます。
例えばどの AZ で動作しているとかを条件に指定出来てとても便利なのですが、従来は実際にどのリソースが実験の影響っを受けるのか把握するのが困難になっていました。

実験テンプレート作成後のターゲット画面でも、ターゲットの条件はわかりますがこの条件でどのリソースが対象となるのかはわからないですね。

ではプレビューを生成してみましょう。

ターゲットの EC2 インスタンスが確認出来ました。
いやーこれはかなり良いですよ。検証環境であれば良いのですが、カオスエンジニアリングでは本番環境に意図的に障害を発生させることがあると思いますが、範囲や規模がわからずに実行するのは怖いですからね。

一点注意点がありまして、アップデートアナウンス内でも言及されているのですが、このリソース検出結果はサンプリングされる場合があるそうです。
そのため、実験を実際に実行した際に影響を受けるリソースが異なる場合があります。
使用用途としては、実験が影響を与えるリソースの規模を把握するような使い方をメインとするのが良さそうです。

実験対象として検出されてない場合

実験対象として検出されない条件の場合はリソース検出に失敗します。
例えば今回だと EC2 の再起動アクションに対して次のように EC2 が停止されている場合です。

次のようにターゲットプレビューのステータスが「Failed」となりました。
EC2 を開始状態にして再度プレビューを生成すると成功しました。

このように、実験テンプレートでプレビューを生成したタイミングのリソースの状態によっても結果が変わるということを知っておきましょう。

さいごに

本日は AWS FIS で実験テンプレートのターゲットをプレビュー出来るようになったので紹介しました。

タグなど条件ベースで指定している場合はこれまではエイヤでやるしかなかったので、とてもありがたいアップデートだと思います。
実験テンプレート開発時に実行してみたら条件に合致せずリソースが検出されなくて実験に失敗、テンプレートを修正するみたいなことも多かったと思うのですが、実験テンプレート準備の過程でトライアンドエラーを行う際にも効率的になりそうですね。