Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
AWS Fargate 上の Amazon ECS コンテナのディスク容量を増やす方法を教えてください。
AWS Fargate 上の Amazon Elastic Container Service (Amazon ECS) コンテナのディスク容量を増やしたいです。
簡単な説明
デフォルトでは、プラットフォームバージョン 1.40 で起動する Fargate タスクには、20 GiB のタスクストレージサイズが単一のエフェメラルボリュームとして含まれます。20 GiB を超えるストレージが必要な場合は、次のいずれかの方法で追加のストレージを構成します。
- 200 GiB 以内のストレージには、Fargate のエフェメラルストレージを使用します。エフェメラルストレージは永続的ストレージではありません。
- スケーラブルなファイルストレージには、Amazon Elastic File System (Amazon EFS) ボリュームを使用します。Amazon EFS ボリュームは永続的なストレージを提供します。
- データ集約型ストレージには、EBS ボリュームを Fargate にアタッチします。EBS ボリュームは、非永続的です。
重要: Amazon EFS ボリュームの作成時には、Fargate サービスに割り当てた Amazon Virtual Private Cloud (Amazon VPC) およびサブネットと同一のものを使用してください。
解決策
**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
Fargate 上の Amazon ECS コンテナのディスク容量を増やすには、ユースケースに応じた手順を実行します。
エフェメラルストレージを構成する
次の手順を実行します。
-
タスク定義を作成または更新し、タスクにエフェメラルストレージを構成します。例:
"containerDefinitions": [ { "memory": 128, "essential": true, "name": "nginx", "image": "nginx" } ] "ephemeralStorage": { "sizeInGiB": 30 } -
更新したタスク定義を使用してタスクを実行します。
注: タスクがサービスに関連付けられている場合は、新しいタスク定義リビジョンを選択してサービスを更新してください。
詳細については、「Amazon ECS でバインドマウントを使用する」を参照してください。
Amazon EFS ボリュームでストレージを構成する
次の手順を実行します。
- Amazon EFS マウントターゲットのセキュリティグループを作成します。次に、ソースのタスクセキュリティグループからの NFS トラフィックをポート 2049 で許可するインバウンドルールを追加します。
- Amazon EFS ファイルシステムを作成し、セキュリティグループをマウントターゲットにアタッチします。
注: デフォルトでは、所定の AWS リージョンにおいて、各アベイラビリティーゾーンでマウントターゲットが構成されます。Fargate サービスの VPC サブネットが配置されたアベイラビリティーゾーンをすべて選択します。 - ファイルシステムのファイルシステム ID を書き留めておきます (例: fs-12345678)。
- タスク定義を作成または更新し、Amazon EFS ファイルシステムを含む Amazon ECS タスクのボリュームを構成します。例:
注: fs-12345678 をファイルシステム ID に置き換えてください。"volumes": [ { "name": "efs-test-volume", "efsVolumeConfiguration": { "fileSystemId": "fs-12345678", "transitEncryption": "ENABLED" } } ] - コンテナ定義セクションでコンテナ内のボリュームにマウントポイントを作成します。例:
注: containerPath は、ボリュームをマウントするコンテナ内のパスです。sourceVolume は、ボリューム名です。"containerDefinitions": [ { "memory": 128, "portMappings": [ { "hostPort": 80, "containerPort": 80, "protocol": "tcp" } ], "essential": true, "mountPoints": [ { "containerPath": "/mount/path/inside/container", "sourceVolume": "efs-test-volume" } ], "name": "nginx", "image": "nginx" } ] - 更新したタスク定義を使用してタスクを実行します。
注: タスクがサービスに関連付けられている場合は、新しいタスク定義リビジョンを選択してサービスを更新してください。
EBS ボリュームを Fargate にアタッチする
次の手順を実行します。
-
タスク定義を作成または更新し、EBS ボリュームを起動時に構成するための設定を行います。"configuredAtLaunch" オプションを指定し、true に設定します。例:
"containerDefinitions": [ { "name": "nginx", "image": "public.ecr.aws/nginx/nginx:latest", "networkMode": "awsvpc", "portMappings": [ { "name": "nginx-80-tcp", "containerPort": 80, "hostPort": 80, "protocol": "tcp", "appProtocol": "http" } ], "mountPoints": [ { "sourceVolume": "myEBSVolume", "containerPath": "/mount/ebs", "readOnly": true } ] } ], "volumes": [ { "name": "myEBSVolume", "configuredAtLaunch": true } ] -
スタンドアロンタスクを起動します。または、JSON の一部としてボリューム構成を含め、サービスの一環としてタスクを起動します。
スタンドアロンタスクの JSON 例:{ "cluster": "mycluster", "taskDefinition": "mytaskdef", "volumeConfigurations": [ { "name": "datadir", "managedEBSVolume": { "volumeType": "gp3", "sizeInGiB": 100, "roleArn": "arn:aws:iam:1111222333:role/ecsInfrastructureRole", "encrypted": true, "kmsKeyId": "arn:aws:kms:region:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } } ] }注: 例示した通り、タスクの起動にはスナップショットは必要ではありません。
サービス JSON の例:{ "cluster": "mycluster", "taskDefinition": "mytaskdef", "serviceName": "mysvc", "desiredCount": 2, "volumeConfigurations": [ { "name": "myEbsVolume", "managedEBSVolume": { "roleArn":"arn:aws:iam:1111222333:role/ecsInfrastructureRole", "snapshotId": "snap-12345" } } ] }注: roleArn をアカウントの ecsInfrastructureRole に置き換えてください。snapshotId をボリューム作成元のスナップショット ID に置き換えてください。
- トピック
- Containers
- 言語
- 日本語

関連するコンテンツ
- 質問済み 2年前