¿Cómo puedo montar un sistema de archivos de Amazon EFS en un contenedor o tarea de Amazon ECS que se ejecuta en Fargate?
Quiero montar un sistema de archivos de Amazon Elastic File System (Amazon EFS) en un contenedor o tarea de Amazon Elastic Container Service (Amazon ECS). El contenedor o la tarea de Amazon ECS se ejecuta en AWS Fargate.
Breve descripción
Para montar un sistema de archivos de Amazon EFS en una tarea o contenedor de Fargate, primero debe crear una definición de tarea. A continuación, ponga la definición de la tarea a disposición de los contenedores de la tarea en todas las zonas de disponibilidad de su región de AWS. Por último, sus tareas de Fargate utilizarán Amazon EFS para montar automáticamente el sistema de archivos en las tareas que especifique en la definición de la tarea.
Importante: La siguiente resolución se aplica a la versión 1.4.0 y posteriores de la plataforma Fargate. Estas versiones cuentan con un almacenamiento persistente que puede definir a nivel de tarea y contenedor en Amazon ECS. Las versiones 1.3.0 o anteriores de la plataforma Fargate no admiten el almacenamiento persistente que usa Amazon EFS.
Resolución
Requisitos previos
Debe tener lo siguiente:
Creación y configuración de un sistema de archivos de Amazon EFS
- Cree un sistema de archivos de Amazon EFS y, a continuación, anote el ID de EFS y el ID del grupo de seguridad.
Nota: El sistema de archivos de Amazon EFS, el clúster de Amazon ECS y las tareas de Fargate deben estar en la misma VPC. - Permita las conexiones entrantes en el puerto 2049 (sistema de archivos de red o NFS) desde el grupo de seguridad asociado a su tarea o servicio de Fargate. Para permitir estas conexiones, edite las reglas del grupo de seguridad de su sistema de archivos EFS.
- Actualice el grupo de seguridad de su servicio de Amazon ECS para permitir las conexiones salientes en el puerto 2049 al grupo de seguridad del sistema de archivos de Amazon EFS.
Creación de una definición de tarea
- Abra la consola de Amazon ECS.
- En el panel de navegación, elija Definiciones de tareas y, a continuación, Crear una nueva definición de tarea.
- En el apartado Seleccione la compatibilidad con el tipo de lanzamiento, elija FARGATE y Paso siguiente.
- En el apartado Configurar definiciones de tareas y contenedores, en Nombre de la definición de tarea, introduzca un nombre para la definición de la tarea.
- En el apartado Volúmenes, seleccione Agregar volumen. A continuación, introduzca la información siguiente:
En Nombre, introduzca un nombre para su volumen.
En Tipo de volumen, escriba EFS.
En ID del sistema de archivos, introduzca el ID de su sistema de archivos de Amazon EFS.
Nota: Especifique opciones personalizadas para Directorio raíz, Cifrado en tránsito y EFS AWS Identity and Access Management (IAM) authorization. O acepte el valor predeterminado, donde «/» es el directorio raíz. - Elija Agregar.
- En el apartado Definiciones de contenedores, elija Agregar contenedor.
- En el apartado ALMACENAMIENTO Y REGISTRO, en el subapartado Puntos de montaje, seleccione el volumen que creó para Volumen de origen.
- En Ruta del contenedor, elija la ruta del contenedor.
- (Opcional) En el apartado ENTORNO, en Punto de entrada, introduzca su punto de entrada.
- En Comando, introduzca el comando [df ,-h] para mostrar el sistema de archivos montado.
Nota: Puede utilizar el punto de entrada y el comando para comprobar si el sistema de archivos de Amazon EFS se ha montado correctamente. De forma predeterminada, el contenedor se cierra una vez que el comando df -h se haya ejecutado correctamente. - Elija Agregar.
- Introduzca la información de los campos restantes en el asistente de definición de tareas y, a continuación, seleccione Crear.
En el siguiente ejemplo, la definición de tareas en JSON usa un bucle infinito para mantener la tarea en ejecución. La definición de la tarea crea un volumen de datos denominado efs-test. El contenedor nginx monta el volumen de datos del host en la ruta Any_Container_Path.
{ "family": "sample-fargate-test", "networkMode": "awsvpc", "executionRoleArn": "arn:aws:iam::1234567890:role/ecsTaskExecutionRole", "containerDefinitions": [ { "name": "fargate-app", "image": "nginx", "portMappings": [ { "containerPort": 80, "hostPort": 80, "protocol": "tcp" } ], "essential": true, "entryPoint": [ "sh", "-c" ], "command": [ "df -h && while true; do echo \"RUNNING\"; done" ], "mountPoints": [ { "sourceVolume": "efs-test", "containerPath": "Any_Container_Path" } ], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "AWS_LOG_GROUP_PATH", "awslogs-region": "AWS_REGION", "awslogs-stream-prefix": "AWS_STREAM_PREFIX" } } } ], "volumes": [ { "name": "efs-test", "efsVolumeConfiguration": { "fileSystemId": "fs-123xx4x5" } } ], "requiresCompatibilities": [ "FARGATE" ], "cpu": "256", "memory": "512" }
Nota: Sustituya fileSystemId, logConfiguration, containerPath y otros valores de marcador de posición con los valores de su configuración personalizada. Además, asegúrese de que la definición de la tarea tenga un nombre de recurso de Amazon (ARN) para el rol de IAM que admita el controlador de registros awslogs.
Ejecución de una tarea de Fargate y comprobación de los registros de tareas
- Use la definición de su tarea para ejecutar una tarea de Fargate.
**Importante:**Ejecutar la tarea en la versión 1.4.0 de la plataforma Fargate. - Para verificar si el sistema de archivos de Amazon EFS está montado correctamente en el contenedor de Fargate, compruebe sus registros de tareas.
El resultado de df-h es similar al siguiente:2020-10-27 15:15:35Filesystem 1K-blocks Used Available Use% Mounted on 2020-10-27 15:15:35 overlay 30832548 9859324 19383976 34% / 2020-10-27 15:15:35 tmpfs 65536 0 65536 0% /dev 2020-10-27 15:15:35 shm 2018788 0 2018788 0% /dev/shm 2020-10-27 15:15:35 tmpfs 2018788 0 2018788 0% /sys/fs/cgroup 2020-10-27 15:15:35 fs-xxxxxxxx.efs.us-east-1.amazonaws.com:/ 9007199254739968 0 9007199254739968 0% /Any_Container_Path 2020-10-27 15:15:35 /dev/xvdcz 30832548 9859324 19383976 34% /etc/hosts 2020-10-27 15:15:35 tmpfs 2018788 0 2018788 0% /proc/acpi 2020-10-27 15:15:35 tmpfs 2018788 0 2018788 0% /sys/firmware 2020-10-27 15:15:35 tmpfs 2018788 0 2018788 0% /proc/scsi RUNNING
Información relacionada
Configuración de sistemas de archivos de Amazon EFS para Amazon ECS mediante la consola
Vídeos relacionados
Contenido relevante
- OFICIAL DE AWSActualizada hace 10 meses
- OFICIAL DE AWSActualizada hace 23 días
- OFICIAL DE AWSActualizada hace 6 meses
- OFICIAL DE AWSActualizada hace 2 años