はじめに
本記事では、AWS CLI を使用して、Fargate タスクのエフェメラルストレージの最大サイズをデフォルトの20GBから変更する方法を記載しています。
(2022/03/11 時点では、管理コンソールによる変更はサポートされていない。)
AWS Fargate 上の Amazon ECS でタスクのエフェメラルストレージのサイズが設定可能に
AWS Copilot CLI、CloudFormation、AWS SDK、および AWS CLI を使用して、AWS Fargate が利用可能なすべてのリージョンで AWS Fargate プラットフォームバージョン 1.4.0 以降で実行される Amazon ECS タスクのエフェメラルストレージのサイズを設定できます。
変更手順
動作確認済みのAWS CLIのバージョン
$ aws --version
aws-cli/1.19.92 Python/3.7.4 Darwin/19.6.0 botocore/1.20.92
下記コマンドで、タスク定義をJSONファイル(task.json)に出力します。
$ aws ecs describe-task-definition --task-definition [タスク定義名] | jq '.taskDefinition' | jq -M 'del(.taskDefinitionArn) | del(.revision) | del(.status) | del(.requiresAttributes) | del(.compatibilities)' > task.json
出力したJSON(task.json)に、下記項目を追加します。
(registeredAt と registeredBy の項目がある場合は、削除する。)
"ephemeralStorage": {
"sizeInGiB": 200
}
例)
{
"containerDefinitions": [
{
"name": "XXXXXXXXXXXXXXXXXXXXXXX",
"image": "1234567890.dkr.ecr.ap-northeast-1.amazonaws.com/XXXXXXXXXXXXXXX:latest",
"cpu": 0,
"portMappings": [],
"essential": true,
"environment": [],
"mountPoints": [],
"volumesFrom": [],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "XXXXXXXXXXXXXXXXXXXXXXXXX",
"awslogs-region": "XXXXXXXXXXXXXXXX",
"awslogs-stream-prefix": "XXXXXX"
}
}
}
],
"family": "XXXXXXXXXXXXXXXXXXXXX",
"taskRoleArn": "arn:aws:iam::1234567890:role/XXXXXXXXXXXXXXXXX",
"executionRoleArn": "arn:aws:iam::1234567890:role/XXXXXXXXXXXXXXX",
"networkMode": "awsvpc",
"volumes": [],
"placementConstraints": [],
"requiresCompatibilities": [
"FARGATE"
],
"cpu": "256",
"memory": "512",
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
"ephemeralStorage": {
"sizeInGiB": 200
}
}
下記コマンドで、編集したJSONを登録します。
$ aws ecs register-task-definition --family [タスク定義名] --cli-input-json file://task.json
画面上では、ECSの管理コンソールの新しいUIからだと確認できます。
参考
Unable to register task definition with ephemeralStorage parameter in ECS Fargate