

# Utilizar Amazon S3 con instancias de Amazon EC2
<a name="AmazonS3"></a>

Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos que ofrece escalabilidad, disponibilidad de datos, seguridad y rendimiento líderes del sector. Puede usar Amazon S3 para almacenar y recuperar cualquier cantidad de datos para varios casos de uso, como lagos de datos, sitios web, copias de seguridad y análisis de macrodatos, desde una instancia de Amazon EC2 o desde cualquier lugar de Internet. Para obtener más información, consulte [¿Qué es Amazon S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)

Existen dos formas de acceder a los datos de Amazon S3 desde las instancias de Amazon EC2 que posee:
+ **Acceso a archivos**: utilice [Amazon S3 Files](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-files.html) para montar un bucket de S3 como sistema de archivos de alto rendimiento en la instancia que posee.
+ **Acceso a objetos**: utilice la [API de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/API/), AWS CLI, los SDK de AWS o herramientas que, como wget, sirven para copiar objetos de S3 y pegarle otros dentro.

## Acceso a archivos con Amazon S3 Files
<a name="S3FilesAccess"></a>

Amazon S3 Files es un sistema de archivos sin servidor que le permite montar su bucket de uso general de S3 como sistema de archivos de alto rendimiento en la instancia de computación que posee. Con S3 Files, usted puede acceder a sus objetos de S3, como archivos, mediante operaciones estándar del sistema de archivos, como leer y escribir en la ruta de montaje local.

Puede montar un sistema de archivos de S3 en una instancia de EC2 durante el inicio, o bien después del inicio en una instancia en ejecución.

**Requisitos previos**

Antes de configurar S3 Files con la instancia de EC2 que posee, asegúrese de tener lo siguiente:
+ Un sistema de archivos de S3 y al menos un destino de montaje en el estado disponible. Para obtener información sobre cómo crear un sistema de archivos de S3, consulte [Uso de archivos de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-files.html) en la *Guía del usuario de Amazon S3*.
+ Una instancia de EC2 de Linux con un perfil de instancia asociado. Si quiere obtener información sobre los permisos necesarios para montar el sistema de archivos, consulte los [Roles y políticas de IAM](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-files-prereq-policies.html#s3-files-prereq-iam) en la *Guía del usuario de Amazon S3*.
+ Grupos de seguridad que permitan el tráfico NFS (puerto 2049) entre su instancia y los destinos de montaje del sistema de archivos. Para obtener información sobre la configuración necesaria del grupo de seguridad, consulte [Grupos de seguridad](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-files-prereq-policies.html#s3-files-prereq-security-groups) en la *Guía del usuario de Amazon S3*.

**Para montar un sistema de archivos en una instancia de EC2 durante el inicio mediante la consola de EC2**

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

1. Seleccione **Iniciar instancia**. 

1. En **Network settings** (Configuración de red), haga lo siguiente:

   1. Elija **Edit (Edición de)**.

   1. En **Subred**, seleccione una subred.

   1. Elija el grupo de seguridad predeterminado para asegurarse de que la instancia de EC2 puede acceder al sistema de archivos de S3. No puede obtener acceso a la instancia EC2 mediante Secure Shell (SSH) con este grupo de seguridad. Para el acceso mediante SSH, puede editar más adelante el grupo de seguridad predeterminado y añadir una regla para permitir SSH, o bien añadir un nuevo grupo de seguridad que permita SSH. Puede utilizar la siguiente configuración:

      1. **Tipo:** SSH 

      1. **Protocolo**: TCP 

      1. **Rango de puerto:** 22 

      1. **Origen:** cualquiera 0.0.0.0/0

1. En **Configurar almacenamiento**, haga lo siguiente:

   1. En **Sistemas de archivos**, elija **S3 Files**.

   1. Elija **Agregar sistema de archivos compartidos**.

   1. En **el sistema de archivos de S3**, los sistemas de archivos aparecen en la zona de disponibilidad en función de la subred que seleccionó en la Configuración de red. Elija el sistema de archivos de S3 que desea montar. Si no dispone de ningún sistema de archivos, elija **Crear un nuevo sistema de archivos** para crear uno nuevo. 

   1. Ingrese una ruta de montaje local en la instancia de EC2 donde desee montar el sistema de archivos (por ejemplo, `/mnt/s3files`). 

   1. Se generará un comando para montar el sistema de archivos y agregarlo a fstab. Puede añadir este comando al campo de **Datos de usuario** en **Detalles avanzados**. La instancia de EC2 se configurará entonces para montar el sistema de archivos de S3 cuando se inicie y siempre que se reinicie. También puede ejecutar estos comandos en su instancia de EC2 una vez que se haya iniciado. 

1. En **Detalles avanzados**, adjunte un perfil de instancia a su instancia. El rol de IAM debe tener permisos para montar el sistema de archivos y obtener acceso al bucket de S3. Si quiere obtener más información sobre los permisos necesarios, consulte los [Roles y políticas de IAM](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-files-prereq-policies.html#s3-files-prereq-iam) en la *Guía del usuario de Amazon S3*. 

1. Seleccione **Iniciar instancia**.

   Una vez iniciada la instancia, se instalan las utilidades de software necesarias y se monta el sistema de archivos. Si desea ver el sistema de archivos, diríjase a la ruta de montaje local.

**Para montar un sistema de archivos en una instancia de EC2 después del inicio**

1. [Conéctese a la instancia de EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect.html) a través de Secure Shell (SSH) o de EC2 Instance Connect en la consola de EC2.

1. Para montar el sistema de archivos de S3, use la utilidad de ayudante de montaje `amazon-efs-utils`. Dependiendo de la distribución de Linux que tenga, use uno de los siguientes comandos para instalar el paquete de `amazon-efs-utils`:

   1. Si utiliza Amazon Linux, ejecute el siguiente comando para instalar efs-utils desde los repositorios de Amazon:

      ```
      sudo yum -y install amazon-efs-utils
      ```

   1. Si utiliza otras [distribuciones de Linux compatibles](https://github.com/aws/efs-utils/?tab=readme-ov-file#efs-utils), ejecute el siguiente comando:

      ```
      curl https://amazon-efs-utils.aws.com/efs-utils-installer.sh | sudo sh -s -- --install
      ```

   1. Para otras distribuciones de Linux, consulte el repositorio de [efs-utils](https://github.com/aws/efs-utils/?tab=readme-ov-file#on-other-linux-distributions) en *GitHub*.

1. Cree un directorio para el punto de montaje del sistema de archivos mediante el siguiente comando:

   ```
   sudo mkdir {path/to/mount}
   ```

1. Monte el sistema de archivos de S3:

   ```
   FS="{YOUR_FILE_SYSTEM_ID}"
   sudo mount -t s3files $FS:/ {path/to/mount}
   ```

1. Confirme que el sistema de archivos esté montado:

   ```
   df -h {path/to/mount}
   ```

**Para ver los objetos de su bucket de S3 como archivos**  
Ahora que ha completado los procedimientos anteriores, puede leer y escribir objetos de S3 como archivos en la ruta de montaje local mediante las operaciones del sistema de archivos estándar. Si tiene objetos en el bucket de S3, puede verlos como archivos mediante el siguiente comando:

```
ls {path/to/mount}
```

## Acceso basado en objetos
<a name="objectaccess"></a>

Puede copiar archivos de Amazon S3 y pegarle otros dentro, mediante la API de S3, AWS CLI, los SDK de AWS o las herramientas HTTP estándar. Si tiene los permisos necesarios, puede copiar un archivo entre Amazon S3 y su instancia utilizando uno de los métodos siguientes. 

------
#### [ wget ]

**nota**  
Este método solo funciona para objetos públicos. Si el objeto no es público, recibirá un mensaje `ERROR 403: Forbidden`. Si recibe este error, debe utilizar la consola de Amazon S3, la AWS CLI, la API de AWS, los AWS SDK o AWS Tools for Windows PowerShell, y debe disponer de los permisos necesarios. Para obtener más información, consulte [Administración de la identidad y el acceso para Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-iam.html) y [Descarga de un objeto](https://docs.aws.amazon.com/AmazonS3/latest/userguide/download-objects.html) en la *Guía del usuario de Amazon S3*.

La utilidad **wget** es un cliente HTTP y FTP que puede usar para descargar objetos públicos desde Amazon S3. Se instala de forma predeterminada en Amazon Linux y la mayoría de las distribuciones y se puede descargar en Windows. Para descargar un objeto de Amazon S3, utilice el siguiente comando, sustituyendo la URL del objeto que va a descargar.

```
[ec2-user ~]$ wget https://{{amzn-s3-demo-bucket}}.s3.amazonaws.com/{{path-to-file}}
```

------
#### [ PowerShell ]

Puede utilizar el [AWS Tools for Windows PowerShell](https://aws.amazon.com/powershell/) para mover objetos hacia y desde Amazon S3.

Utilice el cmdlet [Copy-S3Object](https://docs.aws.amazon.com/powershell/latest/reference/items/Copy-S3Object.html) para copiar un objeto de Amazon S3 en su instancia de Windows de la siguiente manera.

```
Copy-S3Object `
    -BucketName {{amzn-s3-demo-bucket}} `
    -Key {{path-to-file}} `
    -LocalFile {{my_copied_file.ext}}
```

Como alternativa, puede abrir la consola de Amazon S3 mediante un navegador web en la instancia de Windows.

------
#### [ AWS CLI ]

Puede utilizar AWS Command Line Interface (AWS CLI) para descargar elementos restringidos de Amazon S3 y para cargar elementos. Para obtener más información sobre cómo instalar y configurar las herramientas, consulte la [página de detalles de AWS Command Line Interface](https://aws.amazon.com/cli/).

El comando [aws s3 cp](https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html) es similar al comando **cp** de Unix. Puede copiar archivos de Amazon S3 en su instancia, copiar archivos de su instancia en Amazon S3 y copiar archivos de una ubicación de Amazon S3 en otra.

Utilice el siguiente comando para copiar un objeto de Amazon S3 a su instancia:

```
aws s3 cp s3://{{amzn-s3-demo-bucket}}/{{my_folder}}/{{my_file.ext}} {{my_copied_file.ext}}
```

Utilice el siguiente comando para copiar un objeto de su instancia de nuevo en Amazon S3:

```
aws s3 cp {{my_copied_file.ext}} s3://{{amzn-s3-demo-bucket}}/{{my_folder}}/{{my_file.ext}}
```

El comando [aws s3 sync](https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html) puede sincronizar un bucket de Amazon S3 completo en una ubicación de un directorio local. Esto puede facilitar la descarga de un conjunto de datos y mantener la copia local actualizada con el conjunto remoto. Si posee los permisos adecuados en el bucket de Amazon S3, puede enviar su directorio local a la nube cuando haya terminado invirtiendo las ubicaciones de origen y destino en el comando.

Utilice el comando siguiente para descargar un bucket de Amazon S3 completo en un directorio local de su instancia:

```
aws s3 sync s3://{{amzn-s3-demo-source-bucket}} {{local_directory}}
```

------
#### [ Amazon S3 API ]

Puede utilizar una API para obtener acceso a los datos en Amazon S3. Puede utilizar esta API en el desarrollo de la aplicación e integrarla con otras API y SDK. Para obtener más información, consulte [Ejemplos de código para Amazon S3 con los SDK de AWS](https://docs.aws.amazon.com/AmazonS3/latest/API/service_code_examples.html) en la *Referencia de la API de Amazon Simple Storage Service*.

------