Tutorial: Crear un sistema de archivos de EFS y montarlo en una instancia de EC2 con la AWS CLI - Amazon Elastic File System

Tutorial: Crear un sistema de archivos de EFS y montarlo en una instancia de EC2 con la AWS CLI

Cree un sistema de archivos de EFS cifrado, móntelo en una instancia de EC2 en la VPC y pruebe la configuración mediante la AWS CLI.

nota

En el tutorial Introducción, utilice la consola para crear recursos de Amazon EC2 y EFS. En este tutorial, utilizará la AWS CLI para hacer lo mismo: principalmente para familiarizarse con la API de Amazon EFS.

En este tutorial, creará los siguientes recursos de AWS en su cuenta:

  • Recursos de Amazon EC2:

    • Dos grupos de seguridad (para la instancia de EC2 y el sistema de archivos de EFS).

      Añada reglas a los grupos de seguridad para autorizar el acceso de entrada/salida adecuado. De este modo, la instancia de EC2 puede conectarse al sistema de archivos a través del destino de montaje mediante un puerto TCP NFSv4.1 estándar.

    • Una instancia de EC2 en la VPC.

  • Recursos de Amazon EFS:

    • Un sistema de archivos.

    • Un destino de montaje para su sistema de archivos.

      Para montar su sistema de archivos en una instancia EC2 tiene que crear un destino de montaje en la VPC. Puede crear un destino de montaje en cada una de las zonas de disponibilidad de la VPC. Para obtener más información, consulte Cómo funciona Amazon EFS.

A continuación, prueba el sistema de archivos en su instancia EC2. El paso de limpieza al final del tutorial le ofrece información para que elimine estos recursos.

El tutorial crea todos estos recursos en la región Oeste de EE. UU. (Oregón) (us-west-2). Independientemente de la región de Región de AWS que utilice, asegúrese de utilizarla de forma coherente. Todos sus recursos (su VPC, los recursos de EC2 y los recursos de EFS) deben estar en la misma Región de AWS.

Requisitos previos

  • Puede utilizar las credenciales raíz de su Cuenta de AWS para iniciar sesión en la consola y probar el ejercicio de introducción. Sin embargo, AWS Identity and Access Management (IAM) recomienda que no utilice las credenciales raíz de la Cuenta de AWS. En su lugar, cree un usuario administrador en su cuenta y utilice esas credenciales para administrar los recursos de su cuenta. En su lugar, cree un usuario administrador en su cuenta y utilice esas credenciales para administrar los recursos de su cuenta. Para obtener más información, consulte Asignación del acceso a la Cuenta de AWS a un usuario de IAM Identity Center en la Guía del usuario de AWS IAM Identity Center.

  • Puede utilizar una VPC predeterminada o una VPC personalizada que haya creado en su cuenta. Para este tutorial, la configuración de la VPC predeterminada funciona. Sin embargo, si utiliza una VPC personalizada, verifique lo siguiente:

    • Los nombres de host de DNS están habilitados. Para obtener más información, consulte Atributos de DNS para su VPC en la Guía del usuario de Amazon VPC.

    • La gateway de Internet está conectada a su VPC. Para más información, consulte Conectar subredes a Internet por medio de una puerta de enlace de Internet en la Guía del usuario de Amazon VPC.

    • Las subredes de VPC se configuran para solicitar direcciones IP públicas para instancias lanzadas en las subredes de la VPC. Para obtener más información, consulte Direcciones IP para sus VPC y subredes en la Guía del usuario de Amazon VPC.

    • La tabla de ruteo de la VPC incluye una regla para enviar todo el tráfico vinculado a Internet a la gateway de Internet.

  • Debe configurar la AWS CLI y añadir el perfil adminuser.

Configuración de AWS CLI

Utilice las siguientes instrucciones para configurar la AWS CLI y el perfil de usuario.

Para configurar la AWS CLI
  1. Descargue y configure la AWS CLI. Para ver las instrucciones, consulte Introducción a la AWS CLI en la Guía del usuario de AWS Command Line Interface.

  2. Definir perfiles.

    Puede almacenar las credenciales de usuarios en el archivo config de la AWS CLI. Los comandos CLI de ejemplo de este tutorial especifican el perfil adminuser. Cree el perfil adminuser en el archivo config. También puede definir el perfil de usuario del administrador como predeterminado en el archivo config como se muestra.

    [profile adminuser] aws_access_key_id = admin user access key ID aws_secret_access_key = admin user secret access key region = us-west-2 [default] aws_access_key_id = admin user access key ID aws_secret_access_key = admin user secret access key region = us-west-2

    El perfil anterior también define la Región de AWS predeterminada. Si no especifica una región en el comando de la CLI, se supone la región us-west-2.

  3. Verifique la configuración introduciendo el siguiente comando en el símbolo del sistema. Ambos comandos no proporcionan las credenciales de forma explícita, por lo que se utilizan las credenciales del perfil predeterminado.

    • Pruebe el comando de ayuda

      También puede especificar el perfil de usuario de forma explícita añadiendo el parámetro --profile.

      aws help
      aws help \ --profile adminuser

Paso 1: Crear recursos de EC2

En este paso, hará lo siguiente:

  • Cree dos grupos de seguridad.

  • Añada reglas a los grupos de seguridad para autorizar el acceso adicional.

  • Lanzar una instancia EC2. Cree y monte un sistema de archivos de EFS en esta instancia en el siguiente paso.

Paso 1.1: Crear dos grupos de seguridad

En esta sección, cree grupos de seguridad en su VPC para la instancia de EC2 y el destino de montaje de EFS. Más adelante en el tutorial, asigne estos grupos de seguridad a una instancia de EC2 y un destino de montaje de EFS. Para obtener más información sobre los grupos de seguridad, consulte Grupos de seguridad de Amazon EC2 para instancias de Linux.

Para crear grupos de seguridad
  1. Crear dos grupos de seguridad utilizando el comando de la CLI create-security-group:

    1. Cree un grupo de seguridad (efs-walkthrough1-ec2-sg) para la instancia EC2 y proporcionar el ID de su VPC.

      $ aws ec2 create-security-group \ --region us-west-2 \ --group-name efs-walkthrough1-ec2-sg \ --description "Amazon EFS walkthrough 1, SG for EC2 instance" \ --vpc-id vpc-id-in-us-west-2 \ --profile adminuser

      Anote el ID del grupo de seguridad. A continuación, se muestra un ejemplo de respuesta.

      { "GroupId": "sg-aexample" }

      Puede encontrar el ID de la VPC utilizando el siguiente comando.

      $ aws ec2 describe-vpcs

    2. Cree un grupo de seguridad (efs-walkthrough1-mt-sg) para su destino de montaje de EFS. Tiene que proporcionar su ID de VPC.

      $ aws ec2 create-security-group \ --region us-west-2 \ --group-name efs-walkthrough1-mt-sg \ --description "Amazon EFS walkthrough 1, SG for mount target" \ --vpc-id vpc-id-in-us-west-2 \ --profile adminuser

      Anote el ID del grupo de seguridad. A continuación, se muestra un ejemplo de respuesta.

      { "GroupId": "sg-aexample" }
  2. Verifique los grupos de seguridad.

    aws ec2 describe-security-groups \ --group-ids list of security group IDs separated by space \ --profile adminuser \ --region us-west-2

    Ambos deben tener solo una regla de salida que permita que todo el tráfico salga.

    En la siguiente sección, autoriza el acceso adicional que permite lo siguiente:

    • Permitirle conectar a su instancia EC2.

    • Habilite el tráfico entre una instancia de EC2 y un destino de montaje de EFS (al que asociará estos grupos de seguridad más adelante en este tutorial).

Paso 1.2: Añadir reglas a los grupos de seguridad para autorizar el acceso de entrada/salida

En este paso, añade reglas a los grupos de seguridad para autorizar el acceso de entrada/salida.

Para añadir reglas
  1. Autorice las conexiones Secure Shell (SSH) de entrada al grupo de seguridad para la instancia EC2 (efs-walkthrough1-ec2-sg) para que pueda conectarse a la instancia EC2 mediante SSH desde cualquier host.

    $ aws ec2 authorize-security-group-ingress \ --group-id id of the security group created for EC2 instance \ --protocol tcp \ --port 22 \ --cidr 0.0.0.0/0 \ --profile adminuser \ --region us-west-2

    Compruebe que el grupo de seguridad tenga la regla de entrada y salida que ha añadido.

    aws ec2 describe-security-groups \ --region us-west-2 \ --profile adminuser \ --group-id security-group-id
  2. Autorice el acceso de entrada al grupo de seguridad para el destino de montaje de EFS (efs-walkthrough1-mt-sg).

    En el símbolo del sistema, ejecute el siguiente comando authorize-security-group-ingress de la AWS CLI utilizando el perfil adminuser para añadir la regla de entrada.

    $ aws ec2 authorize-security-group-ingress \ --group-id ID of the security group created for Amazon EFS mount target \ --protocol tcp \ --port 2049 \ --source-group ID of the security group created for EC2 instance \ --profile adminuser \ --region us-west-2
  3. Compruebe que ambos grupos de seguridad autorizan ahora el acceso de entrada.

    aws ec2 describe-security-groups \ --group-names efs-walkthrough1-ec2-sg efs-walkthrough1-mt-sg \ --profile adminuser \ --region us-west-2

Paso 1.3: Lanzar una instancia EC2

En este paso, lance una instancia EC2.

Para iniciar una instancia de EC2
  1. Reúna la siguiente información que debe proporcionar al lanzar una instancia EC2:

    • Nombre del par de claves. Para obtener instrucciones sobre cómo crear un par de claves, consulte Creación de un par de claves para la instancia de Amazon EC2 en la Guía del usuario de Amazon EC2.

    • El ID único de la imagen de Amazon Machine (AMI) que desea lanzar.

      El comando de la AWS CLI que utiliza para lanzar una instancia de EC2 requiere el ID de la Imagen de máquina de Amazon (AMI) que desea implementar como parámetro. El ejercicio utiliza la AMI de Amazon Linux HVM.

      nota

      Puede utilizar la mayoría de las AMI basadas en Linux de uso general. Si utiliza otra AMI de Linux, asegúrese de utilizar el administrador de paquetes de la distribución para instalar el cliente de NFS en la instancia. Además, es posible que tenga que añadir paquetes de software conforme los necesite.

      Para la AMI de Amazon Linux HVM, puede encontrar los ID más recientes en AMI de Amazon Linux. Usted elige el valor de ID de la tabla de ID de la AMI de Amazon Linux de la siguiente manera:

      • Elija la región EE. UU. Oeste (Oregón). Este tutorial supone que está creando todos los recursos en la región Oeste de EE. UU. (Oregón) (us-west-2).

      • Elija el tipo EBS-backed HVM 64-bit (porque en el comando de la CLI especifica el tipo de instancia t2.micro, que no admite el almacén de instancias).

    • ID del grupo de seguridad que ha creado para una instancia EC2.

    • Región de AWS. Este tutorial utiliza la región us-west-2.

    • Su ID de subred de VPC donde desea lanzar la instancia. Puede obtener la lista de subredes utilizando el comando describe-subnets.

      $ aws ec2 describe-subnets \ --region us-west-2 \ --filters "Name=vpc-id,Values=vpc-id" \ --profile adminuser

      Después de elegir el ID de subred, anote los siguientes valores del resultado de describe-subnets:

      • ID de subred: necesita este valor a la hora de crear un destino de montaje. En este ejercicio, deberá crear un destino de montaje en la misma subred en la que lanza una instancia EC2.

      • Zona de disponibilidad de la subred: necesita este valor para construir el nombre de DNS de su destino de montaje, que se utiliza para montar un sistema de archivos en la instancia EC2.

  2. Ejecute el siguiente comando run-instances de la AWS CLI para lanzar una instancia EC2.

    $ aws ec2 run-instances \ --image-id AMI ID \ --count 1 \ --instance-type t2.micro \ --associate-public-ip-address \ --key-name key-pair-name \ --security-group-ids ID of the security group created for EC2 instance \ --subnet-id VPC subnet ID \ --region us-west-2 \ --profile adminuser
  3. Anote el ID de instancia devuelto por el comando run-instances.

  4. La instancia de EC2 que ha creado deben tener un nombre de DNS público que utilice para conectarse a la instancia EC2 y montar el sistema de archivos en ella. El nombre de DNS público tiene el siguiente formato:

    ec2-xx-xx-xx-xxx.compute-1.amazonaws.com

    Ejecute el siguiente comando de la CLI y anote el nombre de DNS público.

    aws ec2 describe-instances \ --instance-ids EC2 instance ID \ --region us-west-2 \ --profile adminuser

    Si no encuentra el nombre de DNS público, compruebe la configuración de la VPC en la que ha lanzado la instancia EC2. Para obtener más información, consulte Requisitos previos.

  5. (Opcional) Asigne un nombre a la instancia EC2 que ha creado. Para ello, añada una etiqueta con el nombre de clave y el valor establecido en el nombre que desea asignar a la instancia. Puede hacerlo ejecutando el comando create-tags de la AWS CLI.

    $  aws ec2 create-tags \ --resources EC2-instance-ID \ --tags Key=Name,Value=Provide-instance-name  \ --region us-west-2 \ --profile adminuser

Paso 2: Crear recursos de EFS

En este paso, hará lo siguiente:

  • Crear un sistema de archivos de EFS cifrado.

  • Habilitar la administración del ciclo de vida

  • Cree un destino de montaje en la zona de disponibilidad en la que ha lanzado la instancia de EFS.

Paso 2.1: Crear un sistema de archivos de EFS

En este paso, creará un sistema de archivos de EFS. Anote el FileSystemId para utilizarlo posteriormente al crear destinos de montaje para el sistema de archivos en el siguiente paso.

Para crear un sistema de archivos
  • Cree un sistema de archivos con la etiqueta Name opcional.

    1. En el símbolo del sistema, ejecute el siguiente comando create-file-system de la CLI de AWS.

      $ aws efs create-file-system \ --encrypted \ --creation-token FileSystemForWalkthrough1 \ --tags Key=Name,Value=SomeExampleNameValue \ --region us-west-2 \ --profile adminuser

      Obtendrá la siguiente respuesta.

      { "OwnerId": "111122223333", "CreationToken": "FileSystemForWalkthrough1", "FileSystemId": "fs-c657c8bf", "CreationTime": 1548950706.0, "LifeCycleState": "creating", "NumberOfMountTargets": 0, "SizeInBytes": { "Value": 0, "ValueInIA": 0, "ValueInStandard": 0 }, "PerformanceMode": "generalPurpose", "Encrypted": true, "KmsKeyId": "arn:aws:kms:us-west-2:111122223333:a5c11222-7a99-43c8-9dcc-abcdef123456", "ThroughputMode": "bursting", "Tags": [ { "Key": "Name", "Value": "SomeExampleNameValue" } ] }
    2. Anote el valor FileSystemId. Necesitará este valor cuando cree un destino de montaje para este sistema de archivos en Paso 2.3: Crear un destino de montaje.

Paso 2.2: Habilitar la administración del ciclo de vida

En este paso, habilitará la administración del ciclo de vida en su sistema de archivos para utilizar la clase de almacenamiento Acceso poco frecuente (IA). Para obtener más información, consulte Administrar el ciclo de vida del almacenamiento de los sistemas de archivos de EFS y Clases de almacenamiento de EFS.

Para habilitar la administración del ciclo de vida
  • En el símbolo del sistema, ejecute el siguiente comando put-lifecycle-configuration de la AWS CLI.

    $ aws efs put-lifecycle-configuration \ --file-system-id fs-c657c8bf \ --lifecycle-policies TransitionToIA=AFTER_30_DAYS \ --region us-west-2 \ --profile adminuser

    Obtendrá la siguiente respuesta.

    { "LifecyclePolicies": [ { "TransitionToIA": "AFTER_30_DAYS" } ] }

Paso 2.3: Crear un destino de montaje

En este paso, crea un destino de montaje para el sistema de archivos en la zona de disponibilidad en la que se ha lanzado la instancia EC2.

  1. Asegúrese de que dispone de la siguiente información:

    • ID del sistema de archivos (por ejemplo, fs-example) para el que se crea el destino de montaje.

    • ID de la subred de VPC en la que ha lanzado la instancia de EC2 en Paso 1: Crear recursos de EC2.

      En este tutorial, creará el destino de montaje en la misma subred en la que ha lanzado la instancia de EC2, por lo que necesitará el ID de subred (por ejemplo, subnet-example).

    • ID del grupo de seguridad que ha creado para el destino de montaje en el paso anterior.

  2. En el símbolo del sistema, ejecute el siguiente comando create-mount-target de la AWS CLI.

    $ aws efs create-mount-target \ --file-system-id file-system-id \ --subnet-id subnet-id \ --security-group ID-of-the security-group-created-for-mount-target \ --region us-west-2 \ --profile adminuser

    Obtendrá la siguiente respuesta.

    { "MountTargetId": "fsmt-example", "NetworkInterfaceId": "eni-example", "FileSystemId": "fs-example", "PerformanceMode" : "generalPurpose", "LifeCycleState": "available", "SubnetId": "fs-subnet-example", "OwnerId": "account-id", "IpAddress": "xxx.xx.xx.xxx" }
  3. También puede utilizar el comando describe-mount-targets para obtener las descripciones de los destinos de montaje que ha creado en un sistema de archivos.

    $ aws efs describe-mount-targets \ --file-system-id file-system-id \ --region us-west-2 \ --profile adminuser

Paso 3: Montar el sistema de archivos en la instancia EC2 y probar

En este paso, hará lo siguiente:

  • Reúna la información requerida.

  • Instale el cliente NFS en la instancia EC2.

  • Monte el sistema de archivos en su instancia de EC2 y haga una prueba.

Paso 3.1: Recopilar información

Asegúrese de que dispone de la siguiente información a medida que siga los pasos de esta sección:

  • Nombre de DNS público de su instancia EC2 en el siguiente formato:

    ec2-xx-xxx-xxx-xx.aws-region.compute.amazonaws.com
  • Nombre de DNS de su sistema de archivos. Puede construir este nombre de DNS usando el siguiente formulario genérico:

    file-system-id.efs.aws-region.amazonaws.com

    La instancia EC2 en la que se monta el sistema de archivos mediante el destino de montaje puede resolver el nombre DNS del sistema de archivos en la dirección IP del destino de montaje.

nota

Amazon EFS no requiere que su instancia de EC2 tenga una dirección IP pública o un nombre de DNS público. Los requisitos indicados con anterioridad son solo para este ejemplo del tutorial, para garantizar que podrá conectarse a través de SSH a la instancia desde fuera de la VPC.

Paso 3.2: Instalar el cliente NFS en la instancia de EC2

Puede conectarse a la instancia EC2 desde Windows o desde un equipo que ejecute Linux, macOS X o cualquier otra variante de Unix.

Para instalar un cliente NFS
  1. Conéctese a la instancia EC2. Para obtener más información, consulte Conexión con instancias EC2 en la Guía del usuario de Amazon EC2.

  2. Ejecute los siguientes comandos en la instancia EC2 usando la sesión de SSH:

    1. (Opcional) Obtener actualizaciones y reiniciar.

      $ sudo yum -y update $ sudo reboot

      Tras el reinicio, vuelva a conectarse a su instancia EC2.

    2. Instale el cliente NFS.

      $ sudo yum -y install nfs-utils
      nota

      Si elige la AMI de Amazon Linux Amazon Linux AMI 2016.03.0 al lanzar su instancia de EC2, no tendrá que instalar nfs-utils, porque ya está incluido en la AMI de forma predeterminada.

Paso 3.3: Montar el sistema de archivos en su instancia de EC2 y probar

Ahora monta el sistema de archivos en su instancia EC2.

  1. Haga un directorio ("efs-mount-point").

    $ mkdir ~/efs-mount-point
  2. Monte el sistema de archivos de EFS.

    $ sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport mount-target-DNS:/ ~/efs-mount-point

    La instancia EC2 puede resolver el nombre de DNS del destino de montaje a la dirección IP. Como alternativa, puede especificar la dirección IP del destino de montaje directamente.

    $ sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport mount-target-ip:/  ~/efs-mount-point
  3. Ahora que tiene el sistema de archivos de EFS montado en la instancia de EC2, puede crear archivos.

    1. Cambie el directorio.

      $ cd ~/efs-mount-point
    2. Enumera el contenido del directorio.

      $ ls -al

      Debe estar vacío.

      drwxr-xr-x 2 root root 4096 Dec 29 22:33 . drwx------ 4 ec2-user ec2-user 4096 Dec 29 22:54 ..

    3. El directorio raíz de un sistema de archivos, en el momento de su creación, es propiedad del usuario raíz que es quien puede escribir en el mismo, por lo que es necesario cambiar los permisos para añadir archivos.

      $ sudo chmod go+rw .

      Ahora, si prueba el comando ls -al verá que los permisos se han modificado.

      drwxrwxrwx 2 root root 4096 Dec 29 22:33 . drwx------ 4 ec2-user ec2-user 4096 Dec 29 22:54 ..
    4. Cree un archivo de texto .

      $ touch test-file.txt
    5. Genere un listado del contenido del directorio.

      $ ls -l

Ya ha creado y montado correctamente un sistema de archivos de EFS en la instancia de EC2 en su VPC.

El sistema de archivos que ha montado no persistirá una vez que se reinicie. Para volver a montar automáticamente el directorio, puede utilizar el archivo fstab. Si está utilizando un grupo de Auto Scaling para lanzar instancias EC2, también puede definir scripts en una configuración de lanzamiento.

Paso 4: Limpiar

Si ya no necesita los recursos que ha creado, debe eliminarlos. Puede hacerlo con la CLI.

  • Elimine los recursos de EC2 (la instancia de EC2 y los dos grupos de seguridad). Amazon EFS elimina la interfaz de red al eliminar el destino de montaje.

  • Elimine los recursos de EFS (sistema de archivos, destino de montaje).

Para eliminar los recursos de AWS creados en este tutorial
  1. Finalice la instancia de EC2 que ha creado para este tutorial.

    $ aws ec2 terminate-instances \ --instance-ids instance-id \ --profile adminuser

    También puede eliminar recursos de EC2 a través de la consola. Para obtener instrucciones, consulte Terminar una instancia.

  2. Eliminar el destino de montaje.

    Debe eliminar los destinos de montaje creados para el sistema de archivos antes de eliminar el sistema de archivos. Puede obtener una lista de destinos de montaje utilizando el comando de la CLI describe-mount-targets.

    $ aws efs describe-mount-targets \ --file-system-id file-system-ID \ --profile adminuser \ --region aws-region

    A continuación, elimine el destino de montaje utilizando el comando de la CLI delete-mount-target.

    $ aws efs delete-mount-target \ --mount-target-id ID-of-mount-target-to-delete \ --profile adminuser \ --region aws-region
  3. (Opcional) Elimine los dos grupos de seguridad que ha creado. No hay que pagar para crear grupos de seguridad.

    Debe eliminar el grupo de seguridad del destino de montaje en primer lugar, antes de eliminar el grupo de seguridad de la instancia EC2. El grupo de seguridad del destino de montaje tiene una regla que hace referencia al grupos de seguridad de EC2. Por lo tanto, no puede eliminar en primer lugar el grupo de seguridad de la instancia EC2.

    Para obtener instrucciones, consulte Eliminación de un grupo de seguridad en la Guía del usuario de Amazon EC2.

  4. Elimine el sistema de archivos utilizando el comando de la CLI delete-file-system. Puede obtener una lista de los sistemas de archivos utilizando el comando de la CLI describe-file-systems. Puede obtener el ID del sistema de archivos de la respuesta.

    aws efs describe-file-systems \ --profile adminuser \ --region aws-region

    Elimine el sistema de archivos proporcionando el ID de sistema de archivos.

    $ aws efs delete-file-system \ --file-system-id ID-of-file-system-to-delete \ --region aws-region \ --profile adminuser