前提
- ECS Fargate タイプで、タスクを 2 つ起動していること。
- サービスの設定で、最小および最大実行タスクを最小 100% および最大 200%にしていること。
FIS の設定
FIS の設定で押さえておさえておきたいのは、基本「アクションタイプ」と「ターゲット」の 2 つです。
また、FIS が実験を行うためのアクセス許可をIAMロールで作成する必要もあります。
S3 または、CloudWatch Logs へログを送ることもできますが、今回は省いています。
アクションタイプ
FIS では次のようなアクションがサポートされています。
ここでは、aws:ecs:stop-task を指定しています。
ターゲット
ターゲットでは、先程設定したアクションに対して 1 つ以上の AWS リソースを指定します。
ここでは、対象のクラスター、サービスをリソースパラメータとして指定し、その内の半分(50%)を停止させるように指定します。
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つ立ち上がっているのがわかりますね。
実行したいアクションによると思いますが、今回のケースの場合直接タスクを停止させることと変わりはないため、FIS を利用するべきかどうかは、ケースバイケースですね。