View a markdown version of this page

Ejemplos: cálculos de firma en AWS Signature Version 4 - Amazon Simple Storage Service

Ejemplos: cálculos de firma en AWS Signature Version 4

Para las solicitudes autenticadas, a menos que utilice los AWS SDK, debe escribir código para calcular las firmas que brindan información de autenticación en las solicitudes. El cálculo de firmas en AWS Signature Version 4 (consulte Autenticación de solicitudes (AWS Signature Version 4)) puede ser una tarea compleja, por lo que recomendamos que se usen los AWS SDK siempre que sea posible.

En esta sección, se proporcionan ejemplos de cálculos de firmas escritos en Java y C#. Los ejemplos de código envían las siguientes solicitudes y utilizan el encabezado de HTTP Authorization para proporcionar información de autenticación:

En el resto de esta sección, se describen los ejemplos en Java y C#. Los temas incluyen instrucciones para descargar los ejemplos y ejecutarlos.

Ejemplos de cálculos de firma mediante Java (AWS Signature Version 4)

El ejemplo de Java que muestra el cálculo de firmas se puede descargar en https://docs.aws.amazon.com/AmazonS3/latest/API/samples/AWSS3SigV4JavaSamples.zip. Tenga en cuenta que en estos ejemplos se usa el AWS SDK para Java v1 y se recomienda usar el AWS SDK para Java v2 para aplicaciones nuevas. En RunAllSamples.java, la función main() ejecuta solicitudes de muestra para crear un objeto, recuperar un objeto y crear una URL prefirmada para el objeto. En el ejemplo se crea un objeto a partir de la cadena de texto proporcionada en el 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);
Prueba de los ejemplos en un ordenador basado en Linux

Las instrucciones siguientes son para el sistema operativo Linux.

  1. En un terminal, vaya al directorio que contiene AWSS3SigV4JavaSamples.zip.

  2. Descomprima el archivo .zip.

  3. En un editor de texto, abra el archivo ./com/amazonaws/services/s3/samples/RunAllSamples.java. Actualice el código con la siguiente información:

    • El nombre del bucket en el que se puede crear el nuevo objeto.

      nota

      Los ejemplos utilizan una solicitud de tipo alojamiento virtual para acceder al bucket. Para evitar posibles errores, asegúrese de que el nombre del bucket cumpla con las reglas de nomenclatura de buckets, tal como se explica en Restricciones y limitaciones de los buckets de la Guía del usuario de Amazon Simple Storage Service.

    • Región de AWS donde se encuentra el bucket.

      Si el bucket está en la región Este de EE. UU. (Norte de Virginia), utilice us-east-1 para especificar la región. Para ver una lista de otras Regiones de AWS, vaya a Amazon Simple Storage Service (S3), en Referencia general de AWS.

  4. Compile el código de origen y guarde las clases compiladas en el directorio bin/.

    javac -d bin -source 6 -verbose com
  5. Cambie el directorio a bin/ y, a continuación, ejecute RunAllSamples.

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

    El código ejecuta todos los métodos en main(). Para cada solicitud, el resultado mostrará la solicitud canónica, la cadena a firmar y la firma.

Ejemplos de cálculos de firma mediante C# (AWS Signature Version 4)

El ejemplo de C# que muestra el cálculo de firmas se puede descargar en https://docs.aws.amazon.com/AmazonS3/latest/API/samples/AmazonS3SigV4_Samples_CSharp.zip. Tenga en cuenta que en estos ejemplos se usa el AWS SDK para .Net v1 y se recomienda usar el AWS SDK para .Net v3 para aplicaciones nuevas. En Program.cs, la función main() ejecuta solicitudes de muestra para crear un objeto, recuperar un objeto y crear una URL prefirmada para el objeto. El código para el cálculo de la firma se encuentra en la carpeta \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");
Prueba de los ejemplos con Microsoft Visual Studio 2010 o versiones posteriores
  1. Descomprima el archivo .zip.

  2. Inicie Visual Studio y, a continuación, abra el archivo .sln.

  3. Actualice el archivo App.config con credenciales de seguridad válidas.

  4. Actualice el código de la siguiente manera:

    • En Program.cs, proporcione el nombre del bucket y la Región de AWS donde se encuentra el bucket. El ejemplo crea un objeto en este bucket.

  5. Ejecute el código.

  6. Para comprobar que se creó el objeto, copie la URL prefirmada que crea el programa y péguela en una ventana del navegador.