

# Descarga de objetos
<a name="download-objects"></a>

En esta sección se explica cómo descargar objetos desde un bucket de Amazon S3. Con Amazon S3, puede almacenar objetos en uno o varios buckets, y cada objeto individual puede tener un tamaño de hasta 50 TB. Se puede acceder en tiempo real a cualquier objeto de Amazon S3 que no esté archivado. Los objetos archivados, sin embargo, deben restaurarse antes de poder descargarse. Para obtener más información sobre cómo descargar objetos archivados, consulte [Descarga de registros archivados](#download-archived-objects).

Puede descargar un solo objeto utilizando la consola de Amazon S3, AWS Command Line Interface (AWS CLI), los SDK de AWS o la API de REST de Amazon S3. Para descargar un objeto de hasta 5 TB de S3 sin escribir código ni ejecutar ningún comando, utilice la consola de S3. Para obtener más información, consulte [Descarga de un objeto](#download-an-object).

Para descargar objetos de más de 5 TB, utilice solicitudes de `GetObject` simultáneas con un encabezado HTTP `Range` para leer rangos de bytes específicos o `partNumber` para descargar una parte específica de un objeto. Las solicitudes GET únicas están limitadas a 5 TB y recibirá un error `405 - Method Not Allowed` si las solicitudes GET superan los 5 TB.

Para descargas de objetos grandes, utilice S3 Transfer Manager en Java v1/v2, Python o los AWS CLI SDK. Para obtener el mejor rendimiento, utilice la versión más reciente de AWS Common Runtime (CRT) con estos SDK, que se ha optimizado para utilizar mejor los recursos. CRT escala automáticamente el tamaño de los GET individuales para optimizar el rendimiento. Puede mejorar el rendimiento general de la transferencia asignando más memoria mediante parámetros de límite de memoria, como los `maxNativeMemoryLimitInBytes` SDK para Java. Puede desactivar este comportamiento configurando un tamaño de pieza explícito mediante parámetros de solicitud, como `multipart_chunksize` para AWS CLI y `minimumPartSizeInBytes` para el SDK de Java, en la solicitud de descarga.

Para descargar varios objetos, utilice AWS CloudShell, la AWS CLI o los SDK de AWS. Para obtener más información, consulte [Descarga de varios objetos](#download-multiple-objects).

Si necesita descargar parte de un objeto, utilice parámetros adicionales con la AWS CLI o la API de REST para especificar únicamente los bytes que desee descargar. Para obtener más información, consulte [Para descargar parte de un objeto](#download-objects-parts).

Si necesita descargar un objeto que no le pertenece, pida al propietario del objeto que genere una URL prefirmada que le permita descargar el objeto. Para obtener más información, consulte [Descarga de un objeto de otra Cuenta de AWS](#download-objects-from-another-account).

Cuando descarga objetos fuera de la red de AWS, se aplican tarifas de transferencia de datos. La transferencia de datos dentro de la red de AWS es gratuita si está en la misma Región de AWS, pero se le cobrará por cualquier solicitud `GET`. Para obtener más información sobre los costes de transferencia de datos y los cargos por recuperación de datos, consulte los [precios de Amazon S3](https://aws.amazon.com/s3/pricing/).

**Topics**
+ [Descarga de un objeto](#download-an-object)
+ [Descarga de varios objetos](#download-multiple-objects)
+ [Para descargar parte de un objeto](#download-objects-parts)
+ [Descarga de un objeto de otra Cuenta de AWS](#download-objects-from-another-account)
+ [Descarga de registros archivados](#download-archived-objects)
+ [Descarga de objetos en función de los metadatos](#download-objects-based-on-metadata)
+ [Solución de problemas al descargar objetos](#download-objects-troubleshooting)

## Descarga de un objeto
<a name="download-an-object"></a>

Puede descargar un objeto utilizando la consola de Amazon S3, AWS CLI, los SDK de AWS o la API de REST.

### Uso de la consola de S3
<a name="download-objects-console"></a>

En esta sección se explica cómo utilizar la consola de Amazon S3 para descargar un objeto de un bucket de S3.

**nota**  
Solo se puede descargar un objeto a la vez.
Si utiliza la consola de Amazon S3 para descargar un objeto cuyo nombre de clave termine con un punto (`.`), se eliminará el punto del nombre de clave del objeto descargado. Para conservar el punto al final del nombre del objeto descargado, debe usar la AWS Command Line Interface (AWS CLI), los SDK de AWS o la API de REST de Amazon S3. 

**Para descargar un objeto desde un bucket de S3**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Buckets de uso general** o **Buckets de directorio**.

1. En la lista de buckets, elija el nombre del bucket que contiene el objeto que desea descargar.

    

1. Puede descargar un objeto de un bucket de S3 de cualquiera de las siguientes maneras:
   + Seleccione la casilla de verificación situada junto al objeto y elija **Descargar**. Si desea descargar el objeto a una carpeta específica, en el menú **Acciones**, seleccione **Descargar como**.
   + Si desea descargar una versión específica del objeto, active **Mostrar versiones** (situado junto al cuadro de búsqueda). Seleccione la casilla de verificación situada junto a la versión del objeto que desee y elija **Descargar**. Si desea descargar el objeto a una carpeta específica, en el menú **Acciones**, seleccione **Descargar como**.

### Uso de AWS CLI
<a name="download-object-cli"></a>

En el siguiente comando de ejemplo de `get-object`, se muestra cómo puede utilizar la AWS CLI para descargar un objeto de Amazon S3. Este comando obtiene el objeto `folder/my_image` del bucket `amzn-s3-demo-bucket1`. Debe incluir un `outfile`, que es un nombre de archivo para el objeto descargado, como `my_downloaded_image.jpg`.

```
aws s3api get-object --bucket amzn-s3-demo-bucket1 --key folder/my_image my_downloaded_image.jpg
```

Para obtener más información y ejemplos, consulte [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-object.html) en la *referencia de comandos de AWS CLI*.

### Uso de los AWS SDK
<a name="download-object-sdk"></a>

Para ver ejemplos de cómo descargar un objeto con los AWS SDK, consulte [Code examples](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_GetObject_section.html) en la *Amazon S3 API Reference*.

Para obtener información general sobre el uso de diferentes AWS SDK, consulte [Developing with Amazon S3 using the AWS SDKs](https://docs.aws.amazon.com/AmazonS3/latest/API/sdk-general-information-section.html) en la *Amazon S3 API Reference*.

### Uso de la API de REST
<a name="download-object-rest"></a>

Puede utilizar la API de REST para recuperar objetos de Amazon S3. Para obtener más información, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) en la *Referencia de la API de Amazon Simple Storage Service*.

## Descarga de varios objetos
<a name="download-multiple-objects"></a>

Puede descargar varios objetos mediante AWS CloudShell, la AWS CLI o los SDK de AWS. 

### Uso de AWS CloudShell en Consola de administración de AWS
<a name="download-objects-cloudshell"></a>

AWS CloudShell es un intérprete de comandos previamente autenticado y basado en navegador que se puede lanzar directamente desde la Consola de administración de AWS.

Para obtener más información acerca de AWS CloudShell, consulte [¿Qué es CloudShell?](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html) en la *Guía del usuario de AWS CloudShell*.

**importante**  
Con AWS CloudShell, su directorio principal tiene capacidad de almacenamiento de hasta 1 GB por Región de AWS Por lo tanto, no puede sincronizar buckets con objetos que superen en total esta cantidad. Para ver más limitaciones, consulta las [Service quotas and restrictions](https://docs.aws.amazon.com/cloudshell/latest/userguide/limits.html) (Cuotas y restricciones del servicio) en la *Guía del usuario de AWS CloudShell*.

**Para descargar objetos mediante AWS CloudShell**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudShell en [https://console.aws.amazon.com/cloudshell/](https://console.aws.amazon.com/cloudshell/).

1. Ejecute el siguientes comando para sincronizar objetos del bucket con CloudShell. El siguiente comando sincroniza los objetos del bucket denominado `amzn-s3-demo-bucket1` y crea una carpeta denominada `temp` en CloudShell. CloudShell sincroniza los objetos con esta carpeta. Para usar este comando, sustituya `user input placeholders` por su propia información.

   ```
   aws s3 sync s3://amzn-s3-demo-bucket1 ./temp
   ```
**nota**  
El comando `sync` no es compatible con los buckets de directorio.  
Para realizar una coincidencia de patrones para excluir o incluir objetos concretos, puede utilizar los parámetros `--exclude "value"` y `--include "value"` con el comando `sync`.

1. Ejecute el siguiente comando para comprimir los objetos en la carpeta con el nombre `temp` en un archivo denominado `temp.zip`.

   ```
   zip temp.zip -r temp/
   ```

1. Elija **Acciones** y luego **Descargar archivo**.

1. Escriba el nombre de archivo `temp.zip` y luego elija **Descargar**.

1. (Opcional) Elimine el archivo `temp.zip` y los objetos que están sincronizados con la carpeta `temp` de CloudShell. Con AWS CloudShell, tiene un almacenamiento persistente de hasta 1 GB para cada Región de AWS. 

   Los siguientes comandos de ejemplo se pueden utilizar para eliminar el archivo `.zip` y la carpeta. Para utilizar este comando de ejemplo, sustituya `user input placeholders` por su propia información. 

   ```
   rm temp.zip && rm -rf temp/
   ```

### Uso de AWS CLI
<a name="download-objects-cli"></a>

Los siguientes ejemplos muestran cómo se puede utilizar AWS CLI para descargar todos los archivos u objetos que tienen el directorio o prefijo especificados. Este comando copia todos los objetos del bucket `amzn-s3-demo-bucket1` a su directorio actual. Para usar este comando de ejemplo, use el nombre de su bucket en lugar de `amzn-s3-demo-bucket1`. 

```
aws s3 cp s3://amzn-s3-demo-bucket1 . --recursive
```

El siguiente comando descarga todos los objetos con el prefijo `logs` del bucket `amzn-s3-demo-bucket1` en su directorio actual. También usa los parámetros `--exclude` y `--include` para copiar solo los objetos con el sufijo `.log`. Para utilizar este comando de ejemplo, sustituya `user input placeholders` por su propia información.

```
aws s3 cp s3://amzn-s3-demo-bucket1/logs/ . --recursive --exclude "*" --include "*.log"
```

Para obtener más información y ejemplos, consulte [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/cp.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/cp.html) en la *referencia de comandos de AWS CLI*.

### Uso de los AWS SDK
<a name="download-objects-sdks"></a>

Para ver ejemplos de cómo descargar todos los objetos en un bucket de Amazon S3 con los AWS SDK, consulte [Code examples](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_DownloadBucketToDirectory_section.html) en la *Amazon S3 API Reference*.

Para obtener información general sobre el uso de diferentes AWS SDK, consulte [Developing with Amazon S3 using the AWS SDKs](https://docs.aws.amazon.com/AmazonS3/latest/API/sdk-general-information-section.html) en la *Amazon S3 API Reference*.

## Para descargar parte de un objeto
<a name="download-objects-parts"></a>

Puede descargar parte de un objeto mediante la AWS CLI o la API de REST. Para ello, utilice parámetros adicionales para especificar qué parte de un objeto desea descargar.

### Uso de AWS CLI
<a name="download-objects-part-cli"></a>

El siguiente comando de ejemplo ejecuta una solicitud `GET` de un rango de bytes en el objeto denominado `folder/my_data` del bucket denominado `amzn-s3-demo-bucket1`. En la solicitud, el rango de bytes debe llevar el prefijo `bytes=`. El objeto parcial se descarga en el archivo de salida denominado `my_data_range`. Para utilizar este comando de ejemplo, sustituya `user input placeholders` por su propia información.

```
aws s3api get-object --bucket amzn-s3-demo-bucket1 --key folder/my_data --range bytes=0-500 my_data_range
```

Para obtener más información y ejemplos, consulte [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-object.html) en la *referencia de comandos de AWS CLI*.

Para más información sobre el encabezado `Range` HTTP, consulte el documento [RFC 9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-range) en la página web del editor de RFC.

**nota**  
Amazon S3 no admite la recuperación de varios rangos de datos en una sola solicitud `GET`.

### Uso de la API de REST
<a name="download-objects-part-rest"></a>

Puede usar los parámetros `partNumber` y `Range` de la API de REST para recuperar partes de objetos de Amazon S3. Para obtener más información, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) en la *Referencia de la API de Amazon Simple Storage Service*.

## Descarga de un objeto de otra Cuenta de AWS
<a name="download-objects-from-another-account"></a>

Puede utilizar una URL prefirmada para conceder a otras personas un acceso de tiempo limitado a sus objetos sin necesidad de actualizar su política de buckets.

La URL prefirmada puede introducirse en un navegador o utilizarse por un programa para descargar un objeto. Las credenciales que utiliza la URL son las del usuario de AWS que generó la URL. Una vez creada la URL, cualquier persona que tenga la URL prefirmada puede descargar el objeto correspondiente hasta que la URL caduque.

### Uso de una URL prefirmada en la consola S3
<a name="download-objects-presigned"></a>

Puede utilizar la consola de Amazon S3 para generar una URL prefirmada para compartir un objeto en un bucket de uso general si sigue estos pasos. Al utilizar la consola, el tiempo máximo de caducidad de una URL prefirmada es de 12 horas desde el momento de su creación.

**Para generar una URL prefirmada con la consola de Amazon S3**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Buckets de uso general**.

1. En la lista de buckets, elija el nombre del bucket que contiene el objeto para el que desea generar una URL prefirmada.

1. En la lista **Objetos**, seleccione el objeto para el que desea crear una URL prefirmada.

1. En el menú **Acciones**, elija **Compartir con una URL prefirmada**.

1. Especifique cuánto tiempo de validez desea que tenga la URL prefirmada.

1. Elija **Crear URL prefirmada**.

1. Cuando aparece un mensaje de confirmación, la URL se copia automáticamente en el portapapeles. Verá un botón para copiar la URL prefirmada en caso de que necesite volver a copiarla.

1. Para descargar el objeto, pegue la URL en cualquier navegador y el objeto intentará descargarse.

Para obtener más información sobre las direcciones URL prefirmadas y otros métodos para crearlas, consulte [Descarga y carga de objetos con URL prefirmadas](using-presigned-url.md).

## Descarga de registros archivados
<a name="download-archived-objects"></a>

Para reducir los costos de almacenamiento de los objetos a los que se accede con poca frecuencia, puede *archivar* dichos objetos. Cuando archiva un objeto, se traslada a un almacenamiento de bajo costo, lo que significa que no puede acceder a él en tiempo real. Para descargar un objeto archivado, primero debe restaurarlo. 

Puede restaurar objetos que se han archivado en minutos o en horas, según la clase de almacenamiento. Puede restaurar un objeto archivado mediante la consola de Amazon S3, Operaciones por lotes de S3, la API de REST de Amazon S3, los SDK de AWS y la AWS Command Line Interface (AWS CLI).

Para obtener instrucciones, consulte [Restauración de un objeto archivado](restoring-objects.md). Tras restaurar el objeto archivado, puede descargarlo. 

## Descarga de objetos en función de los metadatos
<a name="download-objects-based-on-metadata"></a>

Puede agregar condiciones previas para descargar un objeto en función de sus metadatos mediante una solicitud de lectura condicional. Puede devolver un objeto en función de su etiqueta de entidad (ETag) o de la fecha de la última modificación. Esto puede limitar una operación de S3 a los objetos actualizados desde una fecha específica o solo devolver la versión de un objeto específica.

Puede utilizar escrituras condicionales para solicitudes de [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) o [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html).

Para obtener más información sobre las solicitudes condicionales, consulte [Agregación de condiciones previas a operaciones de S3 con solicitudes condicionales](conditional-requests.md).

## Solución de problemas al descargar objetos
<a name="download-objects-troubleshooting"></a>

Los permisos insuficientes o las políticas de usuario AWS Identity and Access Management (IAM) o bucket incorrectas pueden provocar errores al intentar descargar objetos de Amazon S3. Estos problemas suelen provocar errores de acceso denegado (403 prohibido), en los que Amazon S3 no puede permitir el acceso a un recurso.

Para conocer las causas habituales de los errores de acceso denegado (403 prohibido), consulte [Solución de problemas de errores de acceso rechazado (403 Forbidden) en Amazon S3](troubleshoot-403-errors.md).

Si obtiene un error 404 NoSuchKey al intentar acceder a un objeto, consulte [¿Cómo puedo solucionar el error 404 “NoSuchKey” de Amazon S3?](https://repost.aws/knowledge-center/404-error-nosuchkey-s3) en el Centro de conocimiento de AWS re:Post.