Specificare la configurazione del volume Amazon EBS nell'implementazione di Amazon ECS - Amazon Elastic Container Service

Specificare la configurazione del volume Amazon EBS nell'implementazione di Amazon ECS

Dopo aver registrato una definizione di attività con il parametro configuredAtLaunch impostato su true, puoi configurare un volume Amazon EBS durante l'implementazione quando esegui un'attività autonoma o quando crei o aggiorni un servizio. Per ulteriori informazioni su come posticipare la configurazione del volume all'ora di avvio utilizzando il parametro configuredAtLaunch, consultare Rimanda la configurazione del volume all'ora di avvio nella definizione di un'attività di Amazon ECS.

Per configurare un volume, puoi utilizzare le API di Amazon ECS oppure puoi passare un file JSON come input per i seguenti comandi AWS CLI:

  • run-task per eseguire un'attività ECS autonoma.

  • start-task per eseguire un'attività ECS autonoma in un'istanza di container specifica. Questo comando non è applicabile alle attività di Fargate.

  • create-service per creare un nuovo servizio ECS.

  • update-service per aggiornare un servizio esistente.

Nota

Affinché un container dell'attività possa scrivere sul volume montato di Amazon EBS, è necessario eseguire il container come utente root.

È possibile anche configurare un volume Amazon EBS utilizzando AWS Management Console. Per ulteriori informazioni, consultare Esecuzione di un'applicazione come attività Amazon ECS, Creazione di un'implementazione di aggiornamenti continui di Amazon ECS e Aggiornamento di un servizio Amazon ECS.

Il seguente frammento di codice JSON mostra tutti i parametri di un volume Amazon EBS che può essere configurato al momento dell'implementazione. Per utilizzare questi parametri per la configurazione del volume, sostituire user input placeholders con le proprie informazioni. Per ulteriori informazioni sui parametri di configurazione, consultare Volume configurations.

"volumeConfigurations": [ { "name": "ebs-volume", "managedEBSVolume": { "encrypted": true, "kmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "volumeType": "gp3", "sizeInGiB": 10, "snapshotId": "snap-12345", "volumeInitializationRate":100, "iops": 3000, "throughput": 125, "tagSpecifications": [ { "resourceType": "volume", "tags": [ { "key": "key1", "value": "value1" } ], "propagateTags": "NONE" } ], "roleArn": "arn:aws:iam::1111222333:role/ecsInfrastructureRole", "terminationPolicy": { "deleteOnTermination": true//can't be configured for service-managed tasks, always true }, "filesystemType": "ext4" } } ]
Importante

Assicurarsi che volumeName, specificato nella configurazione, sia uguale a volumeName, specificato nella definizione dell'attività.

Per informazioni sulla verifica dello stato del volume dell'allegato, consultare Risoluzione dei problemi relativi ai volumi di Amazon EBS collegati alle attività di Amazon ECS . Per informazioni sul ruolo (IAM) AWS Identity and Access Management dell'infrastruttura Amazon ECS, necessario per l'allegato del volume EBS, consultare Ruolo IAM dell'infrastruttura Amazon ECS.

Di seguito sono riportati alcuni frammenti di esempio JSON che mostrano la configurazione dei volumi Amazon EBS. Questi esempi possono essere utilizzati salvando i frammenti in file JSON e passando i file come parametri (utilizzando il parametro --cli-input-json file://filename) per i comandi AWS CLI. Sostituire user input placeholders con le proprie informazioni.

Configurare un volume per un'attività autonoma

Il seguente frammento mostra la sintassi per configurare i volumi di Amazon EBS per l'allegato a un'attività autonoma. Il seguente frammento di codice JSON mostra la sintassi per la configurazione delle impostazioni volumeType, sizeInGiB, encrypted e kmsKeyId. La configurazione specificata nel file JSON viene utilizzata per creare e allegare un volume EBS all'attività autonoma.

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

Configurare un volume al momento della creazione del servizio

Il seguente frammento mostra la sintassi per configurare i volumi di Amazon EBS per l'allegato alle attività gestite da un servizio. I volumi provengono dallo snapshot specificato utilizzando il parametro snapshotId a una velocità di 200 MiB/s. La configurazione specificata nel file JSON viene utilizzata per creare e allegare un volume EBS a ogni attività gestita da un servizio.

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

Configura un volume al momento dell'aggiornamento del servizio

Il seguente frammento di codice JSON mostra la sintassi per l'aggiornamento di un servizio che in precedenza non aveva volumi Amazon EBS configurati per il collegamento alle attività. È necessario fornire l'ARN di una revisione della definizione dell'attività con configuredAtLaunch impostato su true. Il seguente frammento di codice JSON mostra la sintassi per la configurazione delle impostazioni volumeType, sizeInGiB, throughput, iops e filesystemType. Questa configurazione viene utilizzata per creare e allegare un volume EBS a ogni attività gestita da un servizio.

{ "cluster": "mycluster", "taskDefinition": "mytaskdef", "service": "mysvc", "desiredCount": 2, "volumeConfigurations": [ { "name": "myEbsVolume", "managedEBSVolume": { "roleArn":"arn:aws:iam::1111222333:role/ecsInfrastructureRole", "volumeType": "gp3", "sizeInGiB": 100, "iops": 3000, "throughput": 125, "filesystemType": "ext4" } } ] }

Configurare un servizio per non utilizzare più i volumi Amazon EBS

Il seguente frammento di codice JSON mostra la sintassi per aggiornare un servizio in modo che non utilizzi più i volumi Amazon EBS. È necessario fornire l'ARN di una definizione di attività con configuredAtLaunch impostato su false o una definizione di attività senza il parametro configuredAtLaunch. È inoltre necessario fornire un oggetto volumeConfigurations vuoto.

{ "cluster": "mycluster", "taskDefinition": "mytaskdef", "service": "mysvc", "desiredCount": 2, "volumeConfigurations": [] }

Policy di terminazione per i volumi di Amazon EBS

Quando si termina un'attività Amazon ECS, questo utilizza il valore deleteOnTermination per determinare se il volume Amazon EBS associato all'attività terminata deve essere eliminato. Per impostazione predefinita, i volumi EBS collegati alle attività vengono eliminati quando l'attività viene terminata. Per le attività autonome, è possibile modificare questa impostazione per preservare il volume al termine dell'attività.

Nota

I volumi collegati alle attività gestite da un servizio non vengono conservati e vengono sempre eliminati al termine della stessa.

Tag volumi Amazon EBS

È possibile etichettare i volumi Amazon EBS utilizzando l'oggetto tagSpecifications. Utilizzando l'oggetto, è possibile fornire tag personalizzati e impostare la propagazione dei tag dalla definizione dell'attività o dal servizio, a seconda che il volume sia collegato a un'attività autonoma o a un'attività in un servizio. Il numero massimo di tag che è possibile collegare a un volume è pari a 50.

Importante

Amazon ECS allega automaticamente i tag AmazonECSManaged e AmazonECSCreated riservati a un volume Amazon EBS. Ciò significa che è possibile controllare l'allegato di un massimo di 48 tag aggiuntivi a un volume. Questi tag aggiuntivi possono essere tag definiti dall'utente, gestiti da ECS o propagati.

Se si desidera aggiungere tag gestiti da Amazon ECS al proprio volume, è necessario impostare enableECSManagedTags su true nella propria chiamata UpdateService, CreateService, RunTask o StartTask. Se si attivano i tag gestiti da Amazon ECS, quest'ultimo etichetterà automaticamente il volume con informazioni su cluster e servizi (aws:ecs:clusterName e aws:ecs:serviceName). Per ulteriori informazioni sull'etichettare le risorse di Amazon ECS, consultare Tagging your Amazon ECS resources.

Il seguente frammento di codice JSON mostra la sintassi per etichettare ogni volume Amazon EBS collegato a ciascuna attività in un servizio con un tag definito dall'utente. Per utilizzare questo esempio per la creazione di un servizio, sostituisci user input placeholders con le tue informazioni.

{ "cluster": "mycluster", "taskDefinition": "mytaskdef", "serviceName": "mysvc", "desiredCount": 2, "enableECSManagedTags": true, "volumeConfigurations": [ { "name": "datadir", "managedEBSVolume": { "volumeType": "gp3", "sizeInGiB": 100, "tagSpecifications": [ { "resourceType": "volume", "tags": [ { "key": "key1", "value": "value1" } ], "propagateTags": "NONE" } ], "roleArn":"arn:aws:iam:1111222333:role/ecsInfrastructureRole", "encrypted": true, "kmsKeyId": "arn:aws:kms:region:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } } ] }
Importante

È necessario specificare un tipo di risorsa volume per etichettare i volumi Amazon EBS.