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 挂载目标创建安全组。然后,添加入站规则,以接受端口 2049 上来自源任务安全组的 NFS 流量。
- 创建 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 卷。使用设置为 true 的"configuredAtLaunch"选项。例如:
"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。
- 语言
- 中文 (简体)
