Salta al contenuto

Come posso aumentare lo spazio su disco per il mio container Amazon ECS su AWS Fargate?

4 minuti di lettura
0

Desidero aumentare lo spazio sul disco per il mio container Amazon Elastic Container Service (Amazon ECS) su AWS Fargate.

Breve descrizione

Per impostazione predefinita, le attività Fargate avviate con la versione 1.40 della piattaforma includono uno spazio di archiviazione delle attività di 20 GiB come singolo volume temporaneo. Se hai bisogno di più di 20 GiB di spazio di archiviazione, utilizza una delle seguenti opzioni per configurare più spazio di archiviazione:

Importante: quando crei un volume Amazon EFS, utilizza lo stesso Amazon Virtual Private Cloud (Amazon VPC) e le stesse sottoreti assegnati al servizio Fargate.

Risoluzione

Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), consulta la sezione Troubleshoot AWS CLI errors. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Per aumentare lo spazio su disco per un container Amazon ECS su Fargate, completa le attività in base al caso d'uso.

Configura l'archiviazione temporanea

Completa i seguenti passaggi:

  1. Crea o aggiorna la definizione dell'attività per configurare l'archiviazione temporanea per l'attività. Ad esempio:

    "containerDefinitions": [ {
       "memory": 128,
         "essential": true,  
          "name": "nginx",
          "image": "nginx"
       }
    ]
    "ephemeralStorage": {
        "sizeInGiB": 30
        }
  2. Utilizza la definizione dell'attività aggiornata per eseguire l'attività.
    Nota: per le attività associate a un servizio, seleziona una nuova revisione della definizione dell'attività per aggiornare il servizio.

Per ulteriori informazioni, consulta Usa i bind mount con Amazon ECS.

Configura l'archiviazione con volumi Amazon EFS

Completa i seguenti passaggi:

  1. Crea un gruppo di sicurezza le destinazioni di montaggio di Amazon EFS. Quindi aggiungi una regola in entrata per accettare il traffico NFS sulla porta 2049 dal gruppo di sicurezza dell'attività dell'origine.
  2. Crea un file system Amazon EFS, quindi collega il gruppo di sicurezza alle destinazioni di montaggio.
    Nota: per impostazione predefinita, è configurata una destinazione di montaggio in ogni zona di disponibilità di una determinata Regione AWS. Seleziona tutte le zone di disponibilità in cui si trovano le sottoreti VPC per il servizio Fargate.
  3. Annota l'ID del file system. Ad esempio: fs-12345678
  4. Crea o aggiorna una definizione dell'attività per configurare un volume per l'attività Amazon ECS contenente il file system Amazon EFS. Ad esempio:
    "volumes": [    {
          "name": "efs-test-volume",
          "efsVolumeConfiguration": {
               "fileSystemId": "fs-12345678",
               "transitEncryption": "ENABLED"
          }
       }
     ]
    Nota: sostituisci fs-12345678 con l'ID del tuo file system.
  5. Utilizza una sezione dedicata alle definizioni dei container per creare un punto di montaggio per il volume all'interno del container. Ad esempio:
    "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"
       }
    ]
    Nota: containerPath è il percorso all'interno del container in cui monti il volume. sourceVolume è il nome del volume.
  6. Utilizza la definizione dell'attività aggiornata per eseguire l'attività.
    Nota: per le attività associate a un servizio, seleziona una nuova revisione della definizione dell'attività per aggiornare il servizio.

Collega un volume EBS a Fargate

Completa i seguenti passaggi:

  1. Crea o aggiorna la definizione dell'attività per configurare il volume EBS da configurare all'avvio. Utilizza l'opzione "configuredAtLaunch" impostata su true. Ad esempio:

    "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
            }
        ]
  2. Avvia un'attività autonoma. Oppure avvia un'attività come parte di un servizio con una configurazione del volume come parte del JSON.
    Esempio di JSON per attività autonome:

    {
      "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"
          }
        }
      ]
    }

    Nota: come si evince dall'esempio precedente, non è necessario uno snapshot per avviare l'attività.
    Esempio di JSON per un servizio:

    {
        "cluster": "mycluster",
        "taskDefinition": "mytaskdef",
        "serviceName": "mysvc",
        "desiredCount": 2,
        "volumeConfigurations": [
            {
                "name": "myEbsVolume",
                "managedEBSVolume": {
                "roleArn":"arn:aws:iam:1111222333:role/ecsInfrastructureRole",
                "snapshotId": "snap-12345"
                }
            }
        ]
    }

    Nota: sostituisci roleArn con l'ecsInfrastructureRole del tuo account. Sostituisci snapshotId con l'ID dello snapshot da cui desideri creare un volume.

AWS UFFICIALEAggiornata un anno fa