[アップデート]Fault Injection SimulatorでECSに対してタスクレベルの障害注入実験を実施可能になりました

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。枡川です。

Fault Injection Simulator(FIS)でECSに対してタスクレベルの障害注入実験を実施可能になりました。
今までもECSクラスターに対しては障害を注入できたのですが、今回のアップデートでタスクをターゲットとした実験を作成できるようになります。
タスクを対象にすることでFargateを利用している時でも実験可能です。

FISの対象リソース

2022年3月時点での対象リソースタイプを引用しておきます。

aws:ec2:instance – An Amazon EC2 instance
aws:ec2:spot-instance – An Amazon EC2 Spot Instance
aws:ecs:cluster – An Amazon ECS cluster
aws:ecs:task – An Amazon ECS task
aws:eks:nodegroup – An Amazon EKS node group
aws:iam:role – An IAM role
aws:rds:cluster – An Amazon Aurora DB cluster
aws:rds:db – An Amazon RDS DB instance
(引用)Targets for AWS FIS

やってみた

まず、FIS用のIAMロールを作成します。
ECSタスクを対象にする場合には下記権限が必要なため、fis.amazonaws.comに対して許可します。

  • ecs:DescribeTasks
  • ecs:ListTasks
  • ecs:StopTask

ロギング機能を使用する場合はそのための権限も必要となります。

ECSのAutoScailingで最小タスクと最大タスク数をともに2に設定して障害を注入してみます。
FISの実行テンプレートを作成してみると、アクションタイプとしてaws:ecs:stop-taskが選択可能になっています。
対象のリソースを指定する方法として、下記2種類があります。

  • リソースIDを指定
  • タグ、フィルター、パラメータを使用

リソースIDを直接指定して実行してみます。

ECSサービスのイベント履歴を確認すると、ECSタスクが一度落ちてから新しいタスクが登録されていることがわかります。
他のターゲット指定方法として、クラスターとサービスを指定してその内の半分を落としたりすることが可能です。
選択モードが、条件に一致するリソースの中から実験の対象とする割合や数を指定する設定になります。

クラスター、サービスとタグを組み合わせて対象を指定することも可能です。

まとめ

インスタンスレベルに加えてタスクレベルに障害注入の幅が広がったことで、よりさまざまなテストに利用できるようになりました。
是非試してみて下さい!