Especificación de la configuración del volumen de Amazon EBS durante la implementación de Amazon ECS - Amazon Elastic Container Service

Especificación de la configuración del volumen de Amazon EBS durante la implementación de Amazon ECS

Tras registrar una definición de la tarea con el parámetro configuredAtLaunch establecido en true, puede configurar un volumen de Amazon EBS durante la implementación cuando ejecute una tarea independiente o cuando cree o actualice un servicio.

Para configurar un volumen, puede utilizar las API de Amazon ECS o pasar un archivo JSON como entrada para los comandos siguientes de la AWS CLI:

  • run-task para ejecutar una tarea de ECS independiente.

  • start-task para ejecutar una tarea de ECS independiente en una instancia de contenedor específica. Este comando no se aplica a las tareas del tipo de lanzamiento de Fargate.

  • create-service para crear un nuevo servicio de ECS.

  • update-service para actualizar un servicio existente.

nota

Para que un contenedor de la tarea escriba en el volumen de Amazon EBS montado, debe ejecutar el contenedor como usuario raíz.

También puede configurar un volumen de Amazon EBS mediante AWS Management Console. Para obtener más información, consulte Ejecución de una aplicación como tarea de Amazon ECS, Creación de un servicio de Amazon ECS mediante la consola y Actualización de un servicio de Amazon ECS.

El siguiente fragmento de código JSON muestra todos los parámetros de un volumen de Amazon EBS que se pueden configurar durante la implementación. Para utilizar estos parámetros en la configuración el volumen, sustituya user input placeholders por su propia información. Para más información acerca de estos parámetros, consulte 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

Asegúrese de que la propiedad volumeName que indicó en la configuración sea la misma que la propiedad volumeName que indicó en la definición de la tarea.

Para obtener información acerca de la comprobación del estado conexión de volúmenes, consulte Solución de problemas de conexión de volúmenes de Amazon EBS a las tareas de Amazon ECS . Para obtener información acerca del rol de AWS Identity and Access Management (IAM) de la infraestructura de Amazon ECS necesaria para adjuntar volúmenes de EBS, consulte Rol de IAM de infraestructura de Amazon ECS.

A continuación, se muestran ejemplos de fragmentos de código de JSON que muestran la configuración de los volúmenes de Amazon EBS. Estos ejemplos se pueden utilizar si se guardan los fragmentos de código en archivos JSON y si se pasan como parámetros (con el parámetro --cli-input-json file://filename) para los comandos de la AWS CLI. Reemplace los user input placeholders con su propia información.

Configuración de un volumen para una tarea independiente

En el siguiente fragmento de código se muestra la sintaxis para configurar los volúmenes de Amazon EBS para adjuntarlos a una tarea independiente. En el siguiente fragmento de código de JSON se muestra la sintaxis para configurar los valores volumeType, sizeInGiB, encrypted y kmsKeyId. La configuración indicada en el archivo JSON se utiliza para crear y adjuntar un volumen de EBS a la tarea independiente.

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

Configuración de un volumen durante la creación del servicio

En el siguiente fragmento de código se muestra la sintaxis para configurar los volúmenes de Amazon EBS para adjuntarlos a tareas administradas por un servicio. Los volúmenes se obtienen de la instantánea especificada mediante el parámetro snapshotId a una velocidad de 200 MiB/s. La configuración indicada en el archivo JSON se utiliza para crear y adjuntar un volumen de EBS a cada tarea administrada por el servicio.

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

Configuración de un volumen durante la actualización del servicio

El siguiente fragmento de código JSON muestra la sintaxis para actualizar un servicio que anteriormente no tenía los volúmenes de Amazon EBS configurados para adjuntarlos a las tareas. Debe proporcionar el ARN de una revisión de la definición de las tareas con el parámetro configuredAtLaunch establecido en true. En el siguiente fragmento de código de JSON se muestra la sintaxis para configurar los valores volumeType, sizeInGiB, throughput, iops y filesystemType. Esta configuración se utiliza para crear y adjuntar un volumen de EBS a cada tarea administrada por el servicio.

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

Configuración de un servicio para que deje de utilizar los volúmenes de Amazon EBS

El siguiente fragmento de código JSON muestra la sintaxis para actualizar un servicio para que deje de utilizar los volúmenes de Amazon EBS. Debe proporcionar el ARN de una definición de tareas con el parámetro configuredAtLaunch establecido en false o una definición de tareas sin el parámetro configuredAtLaunch. También debe proporcionar un objeto volumeConfigurations vacío.

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

Política de finalización para volúmenes de Amazon EBS

Cuando termina una tarea de Amazon ECS, dicho servicio utiliza el valor deleteOnTermination para determinar si se debe eliminar el volumen de Amazon EBS asociado a la tarea terminada. De manera predeterminada, los volúmenes de EBS asociados a las tareas se eliminan al finalizar la tarea. En el caso de las tareas independientes, puede cambiar esta configuración para conservar el volumen al terminar la tarea.

nota

Los volúmenes adjuntos a tareas administradas por un servicio no se conservan y siempre se eliminan al terminar la tarea.

Etiquetar volúmenes de Amazon EBS

Puede etiquetar los volúmenes de Amazon EBS mediante el objeto tagSpecifications. Con el objeto, puede proporcionar sus propias etiquetas y establecer la propagación de las etiquetas a partir de la definición de la tarea o del servicio, en función de si el volumen está adjunto a una tarea independiente o a una tarea de un servicio. La cantidad máxima de etiquetas que puede adjuntarse a un volumen es 50.

importante

Amazon ECS adjunta automáticamente las etiquetas reservadas AmazonECSCreated y AmazonECSManaged a un volumen de Amazon EBS. Esto significa que puede controlar la conexión de un máximo de 48 etiquetas adicionales a un volumen. Estas etiquetas adicionales pueden ser etiquetas definidas por el usuario, administradas por ECS o propagadas.

Si quiere agregar etiquetas administradas por Amazon ECS al volumen, debe establecer enableECSManagedTags en true en la llamada de UpdateService, CreateService, RunTask o StartTask. Si activa las etiquetas administradas por Amazon ECS, este servicio etiquetará el volumen automáticamente con información del clúster y del servicio (aws:ecs:clusterName y aws:ecs:serviceName). Para obtener más información acerca del etiquetado de recursos de Amazon ECS, consulte Tagging your Amazon ECS resources.

El siguiente fragmento de código JSON muestra la sintaxis para etiquetar cada volumen de Amazon EBS adjunto a cada tarea de un servicio con una etiqueta definida por el usuario. Para utilizar este ejemplo y crear un servicio, sustituya user input placeholders por su propia información.

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

Debe indicar un tipo de recurso volume para etiquetar los volúmenes de Amazon EBS.