Almacenar y recuperar archivos en Amazon S3 - SDK para móviles de AWS

El AWS SDK para móviles de Xamarin ahora está incluido en AWS SDK for .NET. Esta guía hace referencia a la versión archivada del SDK para móviles para Xamarin.

Almacenar y recuperar archivos en Amazon S3

Amazon Simple Storage Service (Amazon S3) proporciona a los desarrolladores de móviles un almacenamiento de objetos seguro, duradero y altamente escalable. Amazon S3 es fácil de usar e incluye una sencilla interfaz de servicios web que le permite almacenar y recuperar la cantidad de datos que desee desde cualquier ubicación de la Web.

En el siguiente tutorial se explica cómo integrar S3 TransferUtility, una utilidad de alto nivel para usar S3 con su aplicación. Para obtener más información sobre el uso de S3 en aplicaciones Xamarin, consulte Amazon Simple Storage Service (S3).

Configuración del proyecto

Requisitos previos

Debe seguir las instrucciones en Setting Up the AWS Mobile SDK for .NET and Xamarin antes de comenzar este tutorial.

En este tutorial también se asume que ya ha creado un bucket de S3. Para crear un bucket de S3, consulte S3 AWS Console.

Definición de permisos de S3

La política predeterminada de roles de IAM da a su aplicación acceso a Amazon Mobile Analytics y Amazon Cognito Sync. Para que el grupo de identidades de Cognito obtenga acceso a Amazon S3, debe modificar los roles del grupo de identidades.

  1. Vaya a la consola de Identity and Access Management y haga clic en Roles (Roles) en el panel izquierdo.

  2. Escriba el nombre del grupo de identidades en el campo de búsqueda. Se muestran dos roles: uno para los usuarios no autenticados y otro para los usuarios autenticados.

  3. Haga clic en el rol de los usuarios no autenticados (el nombre del grupo de identidades tendrá añadido el texto "unauth").

  4. Haga clic en Create Role Policy (Crear política de roles), seleccione Policy Generator (Generador de políticas) y haga clic en Select (Seleccionar).

  5. En la página Edit Permissions (Editar permisos), escriba la configuración que se muestra en la siguiente imagen y reemplace el nombre de recurso de Amazon (ARN) por el suyo. El ARN de un bucket de S3 es parecido a arn:aws:s3:::examplebucket/* y está integrado por la región en la que se encuentra el bucket y por el nombre del bucket. La configuración que se muestra a continuación dará a su grupo de identidades pleno acceso a todas las acciones para el bucket especificado.

    Edit Permissions interface for AWS policy creation, showing options for Amazon S3 access control.
  1. Haga clic en el botón Add Statement (Agregar instrucción) y, a continuación, haga clic en Next Step (Paso siguiente).

  2. El asistente le mostrará la configuración que ha generado. Haga clic en Apply Policy (Aplicar política).

Para obtener más información acerca del procedimiento para conceder acceso a S3, consulte Granting Access to an Amazon S3 Bucket.

Añadir NuGet Package para S3 a su proyecto

Siga el paso 4 de las instrucciones de Setting Up the AWS Mobile SDK for .NET and Xamarin para añadir el paquete S3 NuGet a su proyecto.

(opcional) Configuración de la versión de Signature para las solicitudes de S3

Toda interacción con Amazon S3 es o autenticada o anónima. AWS utiliza los algoritmos de Signature Version 4 o Signature Version 2 para autenticar las llamadas al servicio.

Las nuevas regiones de AWS creadas después de enero de 2014 admiten únicamente Signature Version 4. Sin embargo, muchas de las regiones más antiguas todavía admiten solicitudes de Signature Version 4 y Signature Version 2.

Si su bucket se encuentra en una región que no admite solicitudes de Signature Version 2, como las incluidas en la lista de esta página, debe establecer la propiedad AWSConfigsS3.UseSignatureVersion4 en "true" de la siguiente forma:

AWSConfigsS3.UseSignatureVersion4 = true;

Para obtener más información acerca de las versiones de AWS Signature, consulte Authenticating Requests (AWS Signature Version 4).

Inicializar el cliente S3 TransferUtility

Cree un cliente de S3 pasándole las credenciales del objeto de AWS y después pase el cliente de S3 a Transfer Utility como en el ejemplo:

var s3Client = new AmazonS3Client(credentials,region); var transferUtility = new TransferUtility(s3Client);

Cargar un archivo en Amazon S3

Para cargar un archivo en S3, llame a Upload en el objeto TransferUtility, pasando los siguientes parámetros:

  • file: nombre de la cadena del archivo que desea cargar

  • bucketName: nombre del bucket de S3 en el que se almacenará el archivo

transferUtility.Upload( Path.Combine(Environment.SpecialFolder.ApplicationData,"file"), "bucketName" );

En el código anterior se asume que existe un archivo en el directorio Environment.SpecialFolder.ApplicationData. Las cargas utilizan automáticamente la funcionalidad de carga multiparte de S3 en archivos grandes para mejorar el desempeño.

Descargar un archivo de Amazon S3

Para descargar un archivo de S3, llame a Download en el objeto TransferUtility, pasando los siguientes parámetros:

  • file: nombre de la cadena del archivo que desea descargar

  • bucketName: nombre de cadena del bucket de S3 del que quiere descargar el archivo

  • key: cadena que representa el nombre del objeto S3 (un archivo en este caso) que se descargará

transferUtility.Download( Path.Combine(Environment.SpecialFolder.ApplicationData,"file"), "bucketName", "key" );

Para obtener más información acerca del acceso a Amazon S3 desde aplicaciones Xamarin, consulte Amazon Simple Storage Service (S3).