

# Configuración de sistemas de archivos de Amazon EFS para Amazon ECS mediante la consola
<a name="tutorial-efs-volumes"></a>

Obtenga información sobre cómo utilizar los sistemas de archivos de Amazon Elastic File System (Amazon EFS) con Amazon ECS.

## Paso 1: Crear un clúster de Amazon ECS
<a name="efs-create-cluster"></a>

Siga estos pasos para crear un clúster de Amazon ECS. 

**Para crear un nuevo clúster (consola de Amazon ECS)**

Antes de empezar, asigne el permiso de IAM correspondiente. Para obtener más información, consulte [Ejemplos de clústeres de Amazon ECS](security_iam_id-based-policy-examples.md#IAM_cluster_policies).

1. Abra la consola en [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2).

1. En la barra de navegación, seleccione la región a utilizar.

1. En el panel de navegación, seleccione **Clusters (Clústeres)**.

1. En la página **Clusters** (Clústeres), elija **Create Cluster** (Crear clúster).

1. En **Configuración de clúster**, para **Nombre del clúster**, ingrese `EFS-tutorial`.

1. (Opcional) Para cambiar la VPC y las subredes donde se inician sus tareas y servicios, en **Networking** (Redes), realice cualquiera de las siguientes operaciones:
   + Para eliminar una subred, en **Subnets** (Subredes), elija **X**para cada subred que desea eliminar.
   + Para cambiar a una VPC distinta de la VPC **predeterminada**, en **VPC**, elija una **VPC** existente y, a continuación, en **Subredes**, seleccione cada subred.

1.  Para agregar instancias de Amazon EC2 al clúster, expanda **Infraestructura** y, a continuación, seleccione **Instancias de Amazon EC2**. A continuación, configure el grupo de Auto Scaling que actúa como proveedor de capacidad:

   1. Para crear un grupo de Auto Scaling, desde **Auto Scaling group (ASG)** (Grupo de Auto Scaling), seleccione **Create new group** (Crear nuevo grupo) y, a continuación, proporcione los siguientes detalles sobre el grupo:
     + En **Sistema operativo/arquitectura**, elija Amazon Linux 2.
     + En **EC2 instance type (Tipo de instancia EC2)**, elija `t2.micro`.

        Para **Par de clave de SSH**, elija el par que demuestre su identidad cuando se conecta a la instancia.
     + En **Capacidad**, escriba `1`.

1. Seleccione **Crear**.

## Paso 2: Crear un grupo de seguridad para las instancias de Amazon EC2 y el sistema de archivos de Amazon EFS
<a name="efs-security-group"></a>

En este paso, se crea un grupo de seguridad para las instancias de Amazon EC2 que permiten el tráfico de red entrante en el puerto 80 y para el sistema de archivos de Amazon EFS que permite obtener acceso de entrada desde las instancias de contenedor. 

Cree un grupo de seguridad para las instancias de Amazon EC2 con las siguientes opciones:
+ **Nombre del grupo de seguridad**: un nombre único para el grupo de seguridad.
+ **VPC**: la VPC que identificó anteriormente para el clúster.
+ **Regla de entrada**
  + **Tipo**: **HTTP**
  + **Fuente** - **0.0.0.0/0**.

Cree un grupo de seguridad para el sistema de archivos de Amazon EFS con las siguientes opciones:
+ **Nombre del grupo de seguridad**: un nombre único para el grupo de seguridad. Por ejemplo, `EFS-access-for-sg-dc025fa2`.
+ **VPC**: la VPC que identificó anteriormente para el clúster.
+ **Regla de entrada**
  + **Tipo**: **NFS**
  + **Fuente**: **personalizada** con el ID del grupo de seguridad que creó para las instancias.

Para obtener información sobre cómo crear un grupo de seguridad, consulte [Creación de un grupo de seguridad para instancias de Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-security-group.html) en la *Guía del usuario de Amazon EC2*.

## Paso 3: Crear un sistema de archivos de Amazon EFS
<a name="efs-create-filesystem"></a>

En este paso, se crea un sistema de archivos de Amazon EFS.

**Para crear un sistema de archivos de Amazon EFS para tareas de Amazon ECS.**

1. Abra la consola de Amazon Elastic File System en [https://console.aws.amazon.com/efs/](https://console.aws.amazon.com/efs/).

1. Seleccione **Create file system (Crear sistema de archivos)**.

1. Introduzca un nombre para el sistema de archivos y, a continuación, elija la VPC en la que están alojadas las instancias de contenedor. De forma predeterminada, cada subred de la VPC especificada recibe un destino de montaje que utiliza el grupo de seguridad predeterminado para dicha VPC. A continuación, seleccione **Personalizar**.
**nota**  
Este tutorial asume que su sistema de archivos de Amazon EFS, el clúster de Amazon ECS, las instancias de contenedor y las tareas deben estar en la misma VPC. Para más información sobre cómo montar un sistema de archivos desde una VPC diferente, consulte [Walkthrough: Mount a file system from a different VPC](https://docs.aws.amazon.com/efs/latest/ug/efs-different-vpc.html) en la *Guía del usuario de Amazon EFS*.

1. En la página de **Configuración del sistema de archivos**, configure los ajustes opcionales y, a continuación, en **Configuración de rendimiento**, elija el modo de rendimiento **Por ráfagas** para el sistema de archivos. Una vez que haya configurado los ajustes, seleccione **Siguiente**.

   1. Añada etiquetas para su sistema de archivos. Este paso es opcional. Por ejemplo, es posible especificar un nombre único para el sistema de archivos al escribirlo en la columna **Value** situada junto a la clave **Name**.

   1. (Opcional) Habilite la administración del ciclo de vida para ahorrar dinero en el almacenamiento al que se accede con poca frecuencia. Para obtener más información, consulte [Administración del ciclo de vida de EFS](https://docs.aws.amazon.com/efs/latest/ug/lifecycle-management-efs.html) en la *Guía del usuario de Amazon Elastic File System*.

   1. (Opcional) Habilite el cifrado. Seleccione la casilla de verificación para habilitar el cifrado del sistema de archivos de Amazon EFS en reposo.

1. En la página **Acceso a la red**, en **Destinos de montaje**, reemplace la configuración del grupo de seguridad existente para cada zona de disponibilidad con el grupo de seguridad que creó para el sistema de archivos en [Paso 2: Crear un grupo de seguridad para las instancias de Amazon EC2 y el sistema de archivos de Amazon EFS](#efs-security-group) y, a continuación, seleccione **Siguiente**.

1.  No necesita configurar la **Política del sistema de archivos** para este tutorial, por lo que puede omitir la sección seleccionando **Siguiente**.

1. Revise las opciones del sistema de archivos y elija **Crear** para completar el proceso.

1. Desde la pantalla **Sistemas de archivos**, registre el **ID del sistema de archivos**. En el siguiente paso, hará referencia a este valor en la definición de tareas de Amazon ECS.

## Paso 4: Agregar contenido al sistema de archivos de Amazon EFS
<a name="efs-add-content"></a>

En este paso, se va a montar el sistema de archivos de Amazon EFS en una instancia de Amazon EC2 y a agregar contenido en ella. Esto se hace para realizar pruebas en este tutorial e ilustrar la naturaleza persistente de los datos. Por lo general, cuando se utiliza estas características, se cuenta con una aplicación u otro método de escritura de datos en el sistema de archivos de Amazon EFS.

**Para crear una instancia de Amazon EC2 y montar el sistema de archivos de Amazon EFS**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Elija **Iniciar instancia**.

1. En **Imágenes de aplicaciones y sistema operativo (Imagen de máquina de Amazon)**, seleccione la **AMI de Linux 2 de Amazon (HVM)**.

1. En **Tipo de instancia**, mantenga el tipo de instancia predeterminado, `t2.micro`.

1.  En **Par de claves (inicio de sesión)**, seleccione un par de claves para el acceso SSH a la instancia.

1. En **Configuración de red**, seleccione la VPC que especificó en el sistema de archivos de Amazon EFS y el clúster de Amazon ECS. Seleccione una subred y el grupo de seguridad de la instancia que se creó en [Paso 2: Crear un grupo de seguridad para las instancias de Amazon EC2 y el sistema de archivos de Amazon EFS](#efs-security-group). Configure el grupo de seguridad de la instancia. Asegúrese de que **Asignar automáticamente IP pública** esté habilitado.

1. En **Configurar almacenamiento**, pulse el botón **Editar** para los sistemas de archivos y, a continuación, elija **EFS**. Seleccione el sistema de archivos que creó en [Paso 3: Crear un sistema de archivos de Amazon EFS](#efs-create-filesystem). Si lo desea, puede cambiar el punto de montaje o dejar el valor predeterminado.
**importante**  
Debe seleccionar una subred antes de poder agregar un sistema de archivos a la instancia.

1. Desactive **Crear y adjuntar grupos de seguridad automáticamente**. Deje seleccionada la otra casilla de verificación. Elija **Agregar sistema de archivos compartidos**.

1. En **Advanced Details** (Detalles avanzados), asegúrese de que el script de datos del usuario se rellene automáticamente con los pasos de montaje del sistema de archivos de Amazon EFS.

1.  En **Resumen**, asegúrese de que el **Número de instancias** sea **1**. Seleccione **Iniciar instancia**.

1. En la página **Lanzar una instancia**, seleccione **Ver todas las instancias** para ver el estado de las instancias. Al principio, el estado del **Estado de instancia** es `PENDING`. Una vez que el estado cambie a `RUNNING` y la instancia supere todas las comprobaciones de estado, la instancia estará lista para su uso.

Ahora, se conecta a la instancia de Amazon EC2 y agrega contenido al sistema de archivos de Amazon EFS.

**Para conectarse a la instancia de Amazon EC2 y agregar contenido al sistema de archivos de Amazon EFS**

1. SSH a la instancia de Amazon EC2 que creó. Para obtener más información, consulte [Conexión a la instancia de Linux mediante SSH](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html) en la *Guía del usuario de Amazon EC2*.

1. Desde la ventana del terminal, ejecute el comando **df -T** para comprobar que el sistema de archivos de Amazon EFS esté montado. En el siguiente resultado, hemos resaltado el montaje del sistema de archivos de Amazon EFS.

   ```
   $ df -T
   Filesystem     Type            1K-blocks    Used        Available Use% Mounted on
   devtmpfs       devtmpfs           485468       0           485468   0% /dev
   tmpfs          tmpfs              503480       0           503480   0% /dev/shm
   tmpfs          tmpfs              503480     424           503056   1% /run
   tmpfs          tmpfs              503480       0           503480   0% /sys/fs/cgroup
   /dev/xvda1     xfs               8376300 1310952          7065348  16% /
   127.0.0.1:/    nfs4     9007199254739968       0 9007199254739968   0% /mnt/efs/fs1
   tmpfs          tmpfs              100700       0           100700   0% /run/user/1000
   ```

1. Vaya al directorio en el que está montado el sistema de archivos de Amazon EFS. En el ejemplo anterior, es `/mnt/efs/fs1`.

1. Cree un archivo denominado `index.html` con el siguiente contenido:

   ```
   <html>
       <body>
           <h1>It Works!</h1>
           <p>You are using an Amazon EFS file system for persistent container storage.</p>
       </body>
   </html>
   ```

## Paso 5: Crear una definición de tarea
<a name="efs-task-def"></a>

La siguiente definición de tarea crea un volumen de datos llamado `efs-html`. El contenedor `nginx` monta el volumen de datos host en raíz de NGINX, `/usr/share/nginx/html`.

**Para crear una nueva definición de tareas utilizando la consola de Amazon ECS**

1. Abra la consola en [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2).

1. En el panel de navegación, elija **Task Definitions** (Definiciones de tareas).

1. Elija **Create new task definition** (Crear nueva definición de tarea) y **Create new task definition with JSON** (Crear nueva definición de tarea con JSON).

1. En el cuadro editor de JSON, copie y pegue el siguiente texto JSON, sustituyendo `fileSystemId` por el ID del sistema de archivos de Amazon EFS.

   ```
   {
       "containerDefinitions": [
           {
               "memory": 128,
               "portMappings": [
                   {
                       "hostPort": 80,
                       "containerPort": 80,
                       "protocol": "tcp"
                   }
               ],
               "essential": true,
               "mountPoints": [
                   {
                       "containerPath": "/usr/share/nginx/html",
                       "sourceVolume": "efs-html"
                   }
               ],
               "name": "nginx",
               "image": "public.ecr.aws/docker/library/nginx:latest"
           }
       ],
       "volumes": [
           {
               "name": "efs-html",
               "efsVolumeConfiguration": {
                   "fileSystemId": "fs-1324abcd",
                   "transitEncryption": "ENABLED"
               }
           }
       ],
       "family": "efs-tutorial",
       "executionRoleArn":"arn:aws:iam::111122223333:role/ecsTaskExecutionRole"
   }
   ```
**nota**  
Para el rol de IAM de ejecución de tareas de Amazon ECS no es necesario ningún permiso específico relacionado con Amazon EFS para montar un sistema de archivos de Amazon EFS. De manera predeterminada, si no existe la política basada en recursos de Amazon EFS, al crear el sistema de archivos, el acceso se concede a todas las entidades principales (\$1).  
El rol de tarea de Amazon ECS solo es necesario si la “autorización de IAM de EFS” está habilitada en la definición de tareas de Amazon ECS. Cuando está habilitada, la identidad del rol de la tarea debe poder acceder al sistema de archivos de Amazon EFS en la política basada en recursos de Amazon EFS, y el acceso anónimo debe estar inhabilitado.

1. Seleccione **Crear**.

## Paso 6: Ejecutar una tarea y ver los resultados
<a name="efs-run-task"></a>

Ahora que se creó el sistema de archivos de Amazon EFS y hay contenido web para que el contenedor de NGINX lo sirva, puede ejecutar una tarea mediante la definición de tareas que creó. Los servidores web de NGINX dan servicio a su sencilla página HTML. Si actualiza el contenido en el sistema de archivos de Amazon EFS, esos cambios se propagan a cualquier contenedor que también haya montado ese sistema de archivos.

La tarea se ejecuta en la subred que definió para el clúster.

**Para ejecutar una tarea y ver los resultados mediante la consola**

1. Abra la consola en [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2).

1. En la página **Clusters** (Clústeres), seleccione el clúster que va a ejecutar la tarea independiente.

   Determine el recurso desde el que lanza el servicio.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/tutorial-efs-volumes.html)

1. (Opcional) Elija cómo se distribuye la tarea programada en su infraestructura de clúster. Expanda **Compute configuration** (Configuración de computación) y, a continuación, haga lo siguiente:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/tutorial-efs-volumes.html)

1. En **Application type** (Tipo de aplicación), elija **Task** (Tarea).

1. En **Definición de tarea**, elija la definición de tarea `efs-tutorial` que creó anteriormente.

1. En **Tareas deseadas**, ingrese `1`.

1. Seleccione **Crear**.

1. En la página **Clúster**, elija **Infraestructura**.

1. En **Instancias de contenedor**, elija la instancia de contenedor a la que se va a conectar.

1. En la página **Instancia de contenedor**, en **Redes** registre la **IP pública** para la instancia.

1. Abra un navegador e ingrese la dirección IP pública. Debería ver el siguiente mensaje:

   ```
   It works!
   You are using an Amazon EFS file system for persistent container storage.
   ```
**nota**  
Si no ve el mensaje, asegúrese de que el grupo de seguridad de la instancia de contenedor permita el tráfico de red entrante en el puerto 80 y que el grupo de seguridad del sistema de archivos permita el acceso entrante desde la instancia de contenedor.