2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS FIS を利用して Fargate を対象に障害注入実験

Last updated at Posted at 2022-11-20

前提

  • ECS Fargate タイプで、タスクを 2 つ起動していること。
  • サービスの設定で、最小および最大実行タスクを最小 100% および最大 200%にしていること。

FIS の設定

FIS の設定で押さえておさえておきたいのは、基本「アクションタイプ」と「ターゲット」の 2 つです。
また、FIS が実験を行うためのアクセス許可をIAMロールで作成する必要もあります。

S3 または、CloudWatch Logs へログを送ることもできますが、今回は省いています。

アクションタイプ

FIS では次のようなアクションがサポートされています。

ここでは、aws:ecs:stop-task を指定しています。
スクリーンショット 2022-11-20 16.30.57.png

ターゲット

ターゲットでは、先程設定したアクションに対して 1 つ以上の AWS リソースを指定します。
ここでは、対象のクラスター、サービスをリソースパラメータとして指定し、その内の半分(50%)を停止させるように指定します。

スクリーンショット 2022-11-20 16.31.08.png

IAMロール

今回は、FIS が、ECSタスクの停止を実行するための次のようなIAMロールを作成すればよいと思います。

信頼関係
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "fis.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
ポリシー
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "ecs:*",
            "Resource": "ecs:DescribeTasks",
                        "ecs:ListTasks",
                        "ecs:StopTask"
        }
    ]
}

実験開始

作成されたテンプレートを指定し、「実験を開始」をクリックしてやってみます。

今回は、FIS の実行結果を S3 または、CloudWatch Logs へログ送っているわけではないため、単純にタスクやサービスのログから確認してみます。

タスクが 1つ停止済となり、新しくタスクが1つ立ち上がっているのがわかりますね。
スクリーンショット 2022-11-20 16.58.03.png

実行したいアクションによると思いますが、今回のケースの場合直接タスクを停止させることと変わりはないため、FIS を利用するべきかどうかは、ケースバイケースですね。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?