

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

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Armazenar e recuperar arquivos com o Amazon S3
<a name="getting-started-store-retrieve-s3-transferutility"></a>

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 abaixo explica como integrar o S3 TransferUtility, um utilitário de alto nível para usar o S3 com seu aplicativo. Para obter mais informações sobre o uso do S3 nos aplicativos Xamarin, consulte o [Amazon Simple Storage Service (S3)](s3.md).

## Configuração do projeto
<a name="project-setup"></a>

### Pré-requisitos
<a name="prerequisites"></a>

É necessário concluir todas as instruções na [Configuração do AWS Mobile SDK para .NET e Xamarin](setup.md) 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](https://console.aws.amazon.com/s3/home).

### Definir permissões para o S3
<a name="set-permissions-for-s3"></a>

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](https://console.aws.amazon.com/iam/home) e clique em **Roles (Funções)** no painel à esquerda.

1. 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.

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

1. 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)**.

1. 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.  
![\[Edit Permissions interface for AWS policy creation, showing options for Amazon S3 access control.\]](http://docs.aws.amazon.com/pt_br/mobile/sdkforxamarin/developerguide/images/edit-permissions.png)

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

1. 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](http://blogs.aws.amazon.com/security/post/Tx3VRSWZ6B3SHAV/Writing-IAM-Policies-How-to-grant-access-to-an-Amazon-S3-bucket).

### Adicione o NuGet Package for S3 ao seu projeto
<a name="add-nuget-package-for-s3-to-your-project"></a>

Siga a Etapa 4 das instruções em [Configurar o AWS Mobile SDK para .NET e Xamarin para](setup.md) NuGet adicionar o pacote S3 ao seu projeto.

### (opcional) Configuração da versão de assinatura para solicitações do S3
<a name="optional-configure-the-signature-version-for-s3-requests"></a>

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 seu bucket estiver em uma das regiões que não oferecem suporte às solicitações do Signature versão 2, conforme listado [nesta página](https://docs.aws.amazon.com/general/latest/gr/signature-version-2.html), você deverá definir o AWSConfigs S3. UseSignatureVersion4 propriedades para “verdadeiro” assim:

```
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)](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html).

## Inicializar o cliente S3 TransferUtility
<a name="initialize-the-s3-transferutility-client"></a>

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
<a name="upload-a-file-to-amazon-s3"></a>

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
<a name="download-a-file-from-amazon-s3"></a>

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)](s3.md).