

# Exemplos: cálculos de assinatura no AWS Signature Version 4
<a name="sig-v4-examples-using-sdks"></a>

**Topics**
+ [Exemplos de cálculo de assinatura usando Java (AWS Signature Version 4)](#sig-v4-examples-using-sdk-java)
+ [Exemplos de cálculos de assinatura usando C\# (AWS Signature Version 4)](#sig-v4-examples-using-sdk-dotnet)

 Para solicitações autenticadas, a menos que você esteja usando os SDKs da AWS, é necessário gravar código para calcular assinaturas que forneçam informações de autenticação em suas solicitações. O cálculo da assinatura no AWS Signature Versão 4 (consulte [Autenticação de solicitações (AWS Signature Version 4)](sig-v4-authenticating-requests.md)) pode ser uma tarefa complexa, então é recomendável usar os SDKs da AWS sempre que possível. 

 Esta seção fornece exemplos de cálculos de assinatura gravados em Java e C\#. Os exemplos de código enviam as seguintes solicitações e usam o cabeçalho HTTP Authorization para fornecer informações de autenticação:
+ **Objeto PUT**: exemplos separados ilustram o upload da carga útil completa de uma vez e o upload da carga útil em fragmentos. Para obter informações sobre como usar o cabeçalho de autorização para autenticação, consulte [Autenticação de solicitações: usando o cabeçalho de autorização (AWSSignature Version 4)](sigv4-auth-using-authorization-header.md).
+ **Objeto GET**: este exemplo gera um URL pré-assinado para obter um objeto. Os parâmetros de consulta fornecem a assinatura e outras informações de autenticação. Os usuários podem colar um URL pré-assinado no navegador para recuperar o objeto, ou você pode usar o URL para criar um link clicável. Para obter informações sobre o uso de parâmetros de consulta para autenticação, consulte [Autenticação de solicitações: uso de parâmetros de consulta (AWS Signature Version 4)](sigv4-query-string-auth.md). 

O restante desta seção descreve os exemplos em Java e C\#. Os tópicos incluem instruções para baixar os exemplos e executá-los.

## Exemplos de cálculo de assinatura usando Java (AWS Signature Version 4)
<a name="sig-v4-examples-using-sdk-java"></a>

O exemplo Java que mostra o cálculo da assinatura pode ser baixado em [https://docs.aws.amazon.com/AmazonS3/latest/API/samples/AWSS3SigV4JavaSamples.zip](samples/AWSS3SigV4JavaSamples.zip). Esses exemplos usam o SDK da AWS para Java v1, e recomendamos o uso do [SDK da AWS para Java v2](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html) para novos aplicativos. Em `RunAllSamples.java`, a função `main()` executa solicitações de exemplo para criar um objeto, recuperar um objeto e criar um URL pré-assinado para o objeto. O exemplo cria um objeto a partir da string de texto fornecida no código:

```
PutS3ObjectSample.putS3Object(bucketName, regionName, awsAccessKey, awsSecretKey); 
GetS3ObjectSample.getS3Object(bucketName, regionName, awsAccessKey, awsSecretKey); 
PresignedUrlSample.getPresignedUrlToS3Object(bucketName, regionName, awsAccessKey, awsSecretKey); 
PutS3ObjectChunkedSample.putS3ObjectChunked(bucketName, regionName, awsAccessKey, awsSecretKey);
```

**Para testar os exemplos em um computador Linux**

As instruções a seguir servem para o sistema operacional Linux.

1. Em um terminal, navegue até o diretório que contém `AWSS3SigV4JavaSamples.zip`.

1. Extraia o arquivo .zip. 

1. Em um editor de texto, abra o arquivo `./com/amazonaws/services/s3/samples/RunAllSamples.java`. Atualize o código com as seguintes informações:

    
   + O nome de um bucket em que o novo objeto pode ser criado. 

      
**nota**  
Os exemplos usam uma solicitação de estilo hospedado virtualmente para acessar o bucket. Para evitar possíveis erros, o nome do bucket deve estar de acordo com as regras de nomenclatura do bucket, conforme explicado em [Restrições e limitações do bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html) no *Guia do usuário do Amazon Simple Storage Service*.
   + Região da AWS onde o bucket reside. 

      Se o bucket estiver na região Leste dos EUA (Norte da Virgínia), use us-east-1 para especificar a região. Para obter uma lista de outras Regiões da AWS, acesse [Amazon Simple Storage Service (S3)](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) na *Referência geral da AWS*. 

1. Compile o código-fonte e armazene as classes compiladas no diretório `bin/`.

   ```
   javac -d bin -source 6 -verbose com
   ```

1. Altere o diretório para `bin/` e, em seguida, execute `RunAllSamples`.

    

   ```
   java com.amazonaws.services.s3.sample.RunAllSamples
   ```

   O código executa todos os métodos em `main()`. Para cada solicitação, a saída mostrará a solicitação canônica, a string a ser assinada e a assinatura.



## Exemplos de cálculos de assinatura usando C\# (AWS Signature Version 4)
<a name="sig-v4-examples-using-sdk-dotnet"></a>

 O exemplo de C\# que mostra o cálculo da assinatura pode ser baixado em [https://docs.aws.amazon.com/AmazonS3/latest/API/samples/AmazonS3SigV4\_Samples\_CSharp.zip](samples/AmazonS3SigV4_Samples_CSharp.zip). Esses exemplos usam o SDK da AWS para .NET v1, e recomendamos o uso do [SDK da AWS para .NET v3](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/home.html) para novos aplicativos. Em `Program.cs`, a função `main()` executa solicitações de exemplo para criar um objeto, recuperar um objeto e criar um URL pré-assinado para o objeto. O código para o cálculo da assinatura está na pasta `\Signers`. 

```
PutS3ObjectSample.Run(awsRegion, bucketName, "MySampleFile.txt");

Console.WriteLine("\n\n************************************************");
PutS3ObjectChunkedSample.Run(awsRegion, bucketName, "MySampleFileChunked.txt");

Console.WriteLine("\n\n************************************************");
GetS3ObjectSample.Run(awsRegion, bucketName, "MySampleFile.txt");

Console.WriteLine("\n\n************************************************");
PresignedUrlSample.Run(awsRegion, bucketName, "MySampleFile.txt");
```

**Para testar os exemplos com o Microsoft Visual Studio 2010 ou posterior**

1. Extraia o arquivo .zip.

1.  Inicie o Visual Studio e, em seguida, abra o arquivo .sln.

1. Atualize o arquivo App.config com credenciais de segurança válidas.

1. Atualize o código da seguinte maneira:

    
   +  Em `Program.cs`, forneça o nome do bucket e a Região da AWS onde o bucket reside. O exemplo cria um objeto nesse bucket.

1. Execute o código.

1.  Para verificar se o objeto foi criado, copie o URL pré-assinado criado pelo programa e cole-o em uma janela do navegador. 