Quero aumentar o espaço em disco do meu contêiner do Amazon Elastic Container Service (Amazon ECS) no AWS Fargate.
Breve descrição
Por padrão, as tarefas do Fargate que são iniciadas com a versão da plataforma 1.40 incluem um tamanho de armazenamento de tarefa de 20 GiB como um único volume efêmero. Se você precisar de mais de 20 GiB de armazenamento, use uma das seguintes opções para configurar mais armazenamento:
Importante: Ao criar um volume do Amazon EFS, use a mesma Amazon Virtual Private Cloud (Amazon VPC) e sub-redes atribuídas ao seu serviço do Fargate.
Resolução
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Para aumentar o espaço em disco para um contêiner do Amazon ECS no Fargate, conclua as tarefas com base no seu caso de uso.
Configure o armazenamento temporário
Conclua as etapas a seguir:
-
Crie ou atualize a definição da tarefa para configurar o armazenamento temporário da tarefa. Por exemplo:
"containerDefinitions": [ {
"memory": 128,
"essential": true,
"name": "nginx",
"image": "nginx"
}
]
"ephemeralStorage": {
"sizeInGiB": 30
}
-
Use a definição atualizada da tarefa para executar a tarefa.
Observação: Para tarefas associadas a um serviço, selecione uma nova revisão de definição de tarefa para atualizar o serviço.
Para obter mais informações, consulte Uso de montagens vinculadas com o Amazon ECS.
Configure o armazenamento com volumes do Amazon EFS
Conclua as etapas a seguir:
- Crie um grupo de segurança para seus destinos de montagem do Amazon EFS. Em seguida, adicione uma regra de entrada para aceitar o tráfego NFS na porta 2049 do grupo de segurança de tarefas da origem.
- Crie um sistema de arquivos do Amazon EFS e, em seguida, anexe o grupo de segurança aos seus destinos de montagem.
Observação: Por padrão, um destino de montagem é configurado em cada Zona de disponibilidade em uma determinada região da AWS. Selecione todas as Zonas de disponibilidade nas quais as sub-redes da VPC do serviço Fargate estão localizadas.
- Anote o ID do sistema de arquivos do seu sistema de arquivos. Por exemplo: fs-12345678
- Crie ou atualize uma definição de tarefa para configurar um volume para a tarefa do Amazon ECS que tenha seu sistema de arquivos do Amazon EFS. Por exemplo:
"volumes": [ {
"name": "efs-test-volume",
"efsVolumeConfiguration": {
"fileSystemId": "fs-12345678",
"transitEncryption": "ENABLED"
}
}
]
Observação: Substitua fs-12345678 pelo ID do seu sistema de arquivos.
- Use uma seção de definições de contêiner para criar um ponto de montagem para o volume dentro do seu contêiner. Por exemplo:
"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"
}
]
Observação: O containerPath é o caminho dentro do contêiner em que você monta o volume. O sourceVolume é o nome do seu volume.
- Use sua definição de tarefa atualizada para executar a tarefa.
Observação: Para tarefas associadas a um serviço, selecione uma nova revisão de definição de tarefa para atualizar o serviço.
Anexe um volume do EBS ao Fargate
Conclua as etapas a seguir:
-
Crie ou atualize a definição da tarefa para configurar o volume do EBS a ser configurado na inicialização. Use a opção "configuredAtLaunch" definida como verdadeiro. Por exemplo:
"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
}
]
-
Inicie uma tarefa autônoma. Ou inicie uma tarefa como parte de um serviço com uma configuração de volume como parte do JSON.
Exemplo em JSON de tarefas autônomas:
{
"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"
}
}
]
}
Observação: Conforme visto no exemplo anterior, não é necessário um snapshot para iniciar a tarefa.
Exemplo em JSON de serviço:
{
"cluster": "mycluster",
"taskDefinition": "mytaskdef",
"serviceName": "mysvc",
"desiredCount": 2,
"volumeConfigurations": [
{
"name": "myEbsVolume",
"managedEBSVolume": {
"roleArn":"arn:aws:iam:1111222333:role/ecsInfrastructureRole",
"snapshotId": "snap-12345"
}
}
]
}
Observação: Substitua roleArn pela sua conta ecsInfrastructureRole. Substitua snapshotId pelo ID do snapshot do qual você deseja criar um volume.