Utilizar S3 Transfer Utility - 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.

Utilizar S3 Transfer Utility

S3 Transfer Utility facilita la carga y descarga de archivos a S3 desde la aplicación Xamarin.

Inicializar 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);

Configurar TransferUtility (opcional)

Existen tres propiedades opcionales que puede configurar:

  • ConcurrentServiceRequests: determina la cantidad de subprocesos activos o el número de solicitudes web asíncronas simultáneas que se utilizarán para cargar/descargar el archivo. El valor predeterminado es 10.

  • MinSizeBeforePartUpload: obtiene o establece el tamaño mínimo de parte para cargar partes en bytes. El valor predeterminado es 16 MB. La reducción del tamaño mínimo de parte hace que las cargas multiparte se dividan en un mayor número de partes más pequeñas. Establecer un valor demasiado bajo repercute negativamente en la velocidad de transferencia, lo que provoca una latencia y una comunicación adicionales para cada parte.

  • NumberOfUploadThreads: obtiene o establece el número de subprocesos que se ejecutarán. Esta propiedad determina la cantidad de subprocesos activos que se utilizarán para cargar el archivo. El valor de predeterminado es de 10 subprocesos.

Para configurar el cliente de S3 TransferUtility, cree un objeto de configuración, defina las propiedades, y pase el objeto a su constructor de TransferUtility como se indica en el ejemplo:

var config = new TransferUtilityConfig(); config.ConcurrentServiceRequests = 10; config.MinSizeBeforePartUpload=16*1024*1024; config.NumberOfUploadThreads=10; var s3Client = new AmazonS3Client(credentials); var utility = new TransferUtility(s3Client,config);

Descarga de un archivo

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" );

Cargar un archivo

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.