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.
-
Acesse o console do Identity and Access Management
e clique em Roles (Funções) no painel à esquerda. -
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.
-
Clique na função para usuários não autenticados (ela terá "unauth" anexado ao nome do grupo de identidades).
-
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).
-
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.
-
Clique no botão Add Statement (Adicionar instrução) e em Next Step (Próxima etapa).
-
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).