👩‍🔬

AWS FISハンズオン

2021/05/22に公開

はじめに

2021/5/15(土)に以下のハンズオンに参加した際の内容を紹介する。
AWSの基礎を学ぼう 特別編 最新サービスをみんなで触ってみる はじめてのカオスエンジニアリング

この特別編では、2020年12月にアナウンスされた、制御された実験で弾力性とパフォーマンスを向上させるカオスエンジニアリングを実現させる、AWS Fault Injection Simulatorを皆で触って学びましょう

カオスエンジニアリングって何だろう、、
また、それを実現できるAWS Fault Injection Simulator(FIS)とは?
本題に入る前にサクッと解説する。

カオスエンジニアリングってなんだ

稼働中のシステムに対して意図的に障害を発生させて、
システムがどう対応するのかを確認し、実際の障害に備える手法。
NetflixがAWS上のシステムを対象に実施していることで知られている。

AWS FISってなんだ

AWSリソースに対して意図的に障害を起こすことができるマネージドサービス。
使用する際は「実験テンプレート」で障害を起こすシナリオを設計する。

ハンズオンの概要

FISでEC2インスタンスに障害を発生させる実験を行った。

  • FISでEC2を停止して復旧
  • FISでEC2を削除(terminate)
  • FISでEC2を停止してAuto Scalingで復旧

このブログでは一部を紹介。

事前準備

IAMロール作成

fisroleという名前でロールを作成する。
このロールに、FISがEC2を操作する際に必要な権限を付与していく。

fisroleロールを使用するサービスの指定

FISが一覧に載っていないため仮でEC2を選択する。
Image from Gyazo

ポリシー作成

ロールに割り当てるアクセス権限を定義する。
EC2インスタンスの参照や再起動・停止・削除の権限など。
Image from Gyazo

作成したポリシーをロールに割り当て

Image from Gyazo

ロール作成

Image from Gyazo

FISを信頼するサービスとして設定する

このままではFISがEC2にアクセスすることはできない。
なぜなら、fisroleロールを使用する信頼されたサービスとしてFISが設定されていないから。
(ロール作成時にサービス一覧でEC2を選択しましたよね)
Image from Gyazo
「信頼関係の編集」によりFISドメインを指定することで、
FISが、EC2アクセス時に必要となる一時的な認証情報を取得できるようになる。
Image from Gyazo
Image from Gyazo

EC2インスタンス作成

Linuxインスタンスを起動する。
Image from Gyazo

FISでEC2に障害を起こす

特定のLinuxインスタンスを停止して、1分後に復旧させる。

実験テンプレート作成

IAMロール指定

先ほど作ったIAMロールfisroleを指定する。
Image from Gyazo

ターゲット設定

実験対象のAWSリソースを指定する。
さっき作ったLinuxインスタンスに障害を起こしたいので以下になる。
Image from Gyazo

アクション設定

指定したターゲットにどういった障害を起こすかを設定する。
Linuxインスタンスを停止させたいので以下になる。
Image from Gyazo
また、アクションにより停止したインスタンスを1分後に復旧する設定として、
アクションパラメータを1にする。
Image from Gyazo

実験テンプレート実行

実験開始

実験を開始する。
作成したテンプレートの内容にそって実験が開始される。
Image from Gyazo

インスタンス停止

実験開始後、Linuxインスタンスが停止状態になる。
Image from Gyazo

インスタンス復旧

1分後にインスタンスが再起動する。
Image from Gyazo

おわりに

もし今、業務で使用している環境で大規模な障害が起きたらかなり動揺すると思う。
FISを使って訓練出来たらとってもいいけど、明日からというわけにはいかないので
今何が起きても本当に大丈夫なのか?日ごろから意識して観察してみたいと思った。

また、ブログでは紹介していないけど、
Auto Scalingなどあまり理解できていないサービスを触るよい機会だった。

参考資料

GitHubで編集を提案

Discussion