Exemplos: cálculos de assinatura no AWS Signature Version 4
Tópicos
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)) 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).
-
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).
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)
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. Esses exemplos usam o SDK da AWS para Java v1, e recomendamos o uso do SDK da AWS para Java v2 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.
-
Em um terminal, navegue até o diretório que contém
AWSS3SigV4JavaSamples.zip. -
Extraia o arquivo .zip.
-
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 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) na Referência geral da AWS.
-
Compile o código-fonte e armazene as classes compiladas no diretório
bin/.javac -d bin -source 6 -verbose com -
Altere o diretório para
bin/e, em seguida, executeRunAllSamples.java com.amazonaws.services.s3.sample.RunAllSamplesO 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)
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. Esses exemplos usam o SDK da AWS para .NET v1, e recomendamos o uso do SDK da AWS para .NET v3 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
-
Extraia o arquivo .zip.
-
Inicie o Visual Studio e, em seguida, abra o arquivo .sln.
-
Atualize o arquivo App.config com credenciais de segurança válidas.
-
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.
-
-
Execute o código.
-
Para verificar se o objeto foi criado, copie o URL pré-assinado criado pelo programa e cole-o em uma janela do navegador.