Armazenar e recuperar arquivos com o Amazon S3 - AWS Mobile SDK

O AWS Mobile SDK for Xamarin agora está incluído no AWS SDK for .NET. Este guia faz referência à versão arquivada do Mobile SDK para Xamarin.

Armazenar e recuperar arquivos com o Amazon S3

O Amazon Simple Storage Service (Amazon S3) oferece aos desenvolvedores de dispositivos móveis e às equipes de TI um armazenamento de objetos seguro, durável e altamente escalável. O Amazon S3 é fácil de usar, com uma interface simples de serviços da web para armazenar e recuperar qualquer quantidade de dados de qualquer lugar da web.

O tutorial a seguir explica como integrar o S3 TransferUtility, um utilitário de alto nível usar o S3 em conjunto com seu aplicativo. Para obter mais informações sobre o uso do S3 nos aplicativos Xamarin, consulte o Amazon Simple Storage Service (S3).

Configuração do projeto

Pré-requisitos

É necessário concluir todas as instruções na Configuração do AWS Mobile SDK para .NET e Xamarin antes de iniciar este tutorial.

Este tutorial também pressupõe que você já tenha criado um bucket do S3. Para criar um bucket do S3, acesse o console do AWS S3.

Definir permissões para o S3

A política padrão da função do IAM concede ao aplicativo acesso ao Amazon Mobile Analytics e ao Amazon Cognito Sync. Para que o grupo de identidades do Cognito acesse o Amazon S3, você deve modificar as funções do grupo de identidades.

  1. Acesse o console do Identity and Access Management e clique em Roles (Funções) no painel à esquerda.

  2. Digite o nome do grupo de identidades na caixa de pesquisa. Duas funções serão listadas: uma para os usuários autenticados e outra para os usuários não autenticados.

  3. Clique na função para usuários não autenticados (ela terá "unauth" anexado ao nome do grupo de identidades).

  4. Clique em Create Role Policy (Criar política de função), selecione Policy Generator (Gerador de políticas) e, em seguida, clique em Select (Selecionar).

  5. Na página Edit Permissions (Editar permissões), insira as configurações mostradas na imagem a seguir, substituindo o Nome de recurso da Amazon (ARN) pelo seu nome. O ARN do bucket do S3 é semelhante ao arn:aws:s3:::examplebucket/* e composto pela região na qual o bucket está localizado e pelo nome do bucket. As configurações mostradas abaixo concederão ao grupo de identidades acesso total a todas as ações do bucket especificado.

  1. Clique no botão Add Statement (Adicionar instrução) e em Next Step (Próxima etapa).

  2. O assistente mostrará a você a configuração gerada. Clique em Apply Policy (Aplicar política).

Para obter mais informações sobre como conceder acesso ao S3, consulte Conceder acesso a um bucket do Amazon S3.

Adicionar pacotes NuGet para S3 ao seu projeto

Siga a etapa 4 das instruções na Configuração do AWS Mobile SDK para .NET e Xamarin para adicionar o pacote NuGet S3 ao seu projeto.

(opcional) Configuração da versão de assinatura para solicitações do S3

Cada interação com o Amazon S3 é autenticada ou anônima. A AWS usa os algoritmos do Signature versão 4 ou Signature versão 2 para autenticar chamadas para o serviço.

Todas as novas regiões da AWS criadas após janeiro de 2014 são compatíveis apenas com o Signature versão 4. No entanto, muitas regiões mais antigas ainda oferecem suporte às solicitações do Signature versão 4 e do Signature versão 2.

Se o bucket estiver em uma das regiões incompatíveis com as solicitações do Signature versão 2, conforme a lista nesta página, será preciso configurar a propriedade do AWSConfigsS3.UseSignatureVersion4 como "true" (verdadeira), da seguinte forma:

AWSConfigsS3.UseSignatureVersion4 = true;

Para obter mais informações sobre as versões do AWS Signature, consulte Solicitações de autenticação (AWS Signature Version 4).

Inicializar o cliente S3 TransferUtility

Crie um cliente S3, transmitindo seu objeto de credenciais da AWS e, em seguida, transmita o cliente S3 para o utilitário de transferência, da seguinte forma:

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

Para fazer upload de um arquivo ao Amazon S3

Para fazer upload de um arquivo para o S3, chame Upload no objeto Transfer Utility, transmitindo os seguintes parâmetros:

  • file: o nome da string do arquivo que você deseja fazer upload

  • bucketName: o nome da string do bucket do S3 para armazenar o arquivo

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

O código acima pressupõe que há um arquivo no diretório Environment.SpecialFolder.ApplicationData. Os uploads usam automaticamente a funcionalidade multipart upload do S3 em arquivos grandes para aumentar a taxa de transferência.

Como fazer o download de um arquivo do Amazon S3

Para fazer o download de um arquivo do S3, chame Download no objeto Transfer Utility, transmitindo os seguintes parâmetros:

  • file: o nome da string do arquivo que você deseja fazer download

  • bucketName: o nome do bucket do S3 do qual você deseja fazer download do arquivo

  • key: uma string representa o nome do objeto do S3 (neste caso, um arquivo) para download

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

Para obter mais informações sobre como acessar o Amazon S3 em um aplicativo Xamarin, consulte Amazon Simple Storage Service (S3).