Realizar solicitudes HTTP a Amazon SWF - Amazon Simple Workflow Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Realizar solicitudes HTTP a Amazon SWF

Si no utiliza ninguno de los SDK de AWS, puede realizar operaciones de Amazon Simple Workflow Service (Amazon SWF) sobre HTTP mediante el método de solicitud POST. El método POST requiere que especifique la operación en el encabezado de la solicitud y proporcione los datos para la operación en formato JSON en el cuerpo de la solicitud.

Contenido de los encabezados HTTP

Amazon SWF requiere que figure la siguiente información en el encabezado de una solicitud HTTP:

  • host: el punto de conexión de Amazon SWF.

  • x-amz-date: debe proporcionar la marca temporal que figura en el encabezado Date HTTP o en el encabezado AWS de x-amz-date header (algunas bibliotecas de cliente HTTP no permiten configurar el encabezado Date). Cuando hay un encabezado x-amz-date presente, el sistema hace caso omiso de cualquier encabezado Date al autenticar la solicitud.

    La fecha debe especificarse en uno de los tres formatos siguientes, como se especifica en HTTP/1.1 RFC:

    • Sun, 06 Nov 1994 08:49:37 GMT (RFC 822, actualizado por RFC 1123)

    • Sunday, 06-Nov-94 08:49:37 GMT (RFC 850, obsoleto en RFC 1036)

    • Sun Nov 6 08:49:37 1994 (formato asctime() de ANSI C)

  • x-amzn-authorization: los parámetros de solicitud firmados en el formato:

    AWS3 AWSAccessKeyId=####,Algorithm=HmacSHA256, [,SignedHeaders=Header1;Header2;...] Signature=S(StringToSign)

    AWS3: se trata de una etiqueta específica de la implementación de AWS que indica la versión de autenticación utilizada para firmar la solicitud (actualmente, en Amazon SWF, este valor es siempre AWS3).

    AWSAccessKeyId: el ID de la clave de acceso de AWS.

    Algorithm: el algoritmo utilizado para crear el valor HMAC-SHA de la cadena que se ha de firmar, como HmacSHA256 o HmacSHA1.

    Signature: Base64 (Algoritmo [StringToSign, SigningKey]). Para obtener más información, consulte Cálculo de la firma HMAC-SHA para Amazon SWF.

    SignedHeaders: (opcional) si está presente, debe contener una lista de todos los encabezados HTTP utilizados en el cálculo de los encabezados HTTP canonicalizados. Debe utilizar un solo punto y coma (;) (carácter ASCII 59) para delimitar los valores de la lista.

  • x-amz-target: el servicio de destino de la solicitud y la operación de los datos, en el formato:

    com.amazonaws.swf.service.model.SimpleWorkflowService. + <action>

    Por ejemplo, com.amazonaws.swf.service.model.SimpleWorkflowService.RegisterDomain

  • content-type: el tipo debe especificar JSON y el conjunto de caracteres, como application/json; charset=UTF-8

A continuación se muestra un ejemplo de un encabezado en una solicitud HTTP para crear un dominio.

POST http://swf.us-east-1.amazonaws.com/ HTTP/1.1 Host: swf.us-east-1.amazonaws.com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.25) Gecko/20111212 Firefox/3.6.25 ( .NET CLR 3.5.30729; .NET4.0E) Accept: application/json, text/javascript, */* Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Connection: keep-alive Content-Type: application/json; charset=UTF-8 X-Requested-With: XMLHttpRequest X-Amz-Date: Fri, 13 Jan 2012 18:42:12 GMT X-Amz-Target: com.amazonaws.swf.service.model.SimpleWorkflowService.RegisterDomain Content-Encoding: amz-1.0 X-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,Algorithm=HmacSHA256,SignedHeaders=Host;X-Amz-Date;X-Amz-Target;Content-Encoding,Signature=tzjkF55lxAxPhzp/BRGFYQRQRq6CqrM254dTDE/EncI= Referer: http://swf.us-east-1.amazonaws.com/explorer/index.html Content-Length: 91 Pragma: no-cache Cache-Control: no-cache {"name": "867530902", "description": "music", "workflowExecutionRetentionPeriodInDays": "60"}

Este es un ejemplo de la respuesta HTTP correspondiente.

HTTP/1.1 200 OK Content-Length: 0 Content-Type: application/json x-amzn-RequestId: 4ec4ac3f-3e16-11e1-9b11-7182192d0b57

Contenido de cuerpo HTTP

El cuerpo de una solicitud HTTP contiene los datos de la operación especificada en el encabezado de la solicitud HTTP. Use el formato de datos JSON para transmitir los valores de los datos y la estructura de datos, de forma simultánea. Los elementos se pueden anidar en otros elementos mediante la notación de corchete. Por ejemplo, a continuación se muestra una solicitud para enumerar todas las ejecuciones de flujos de trabajo que se iniciaron entre dos puntos específicos en el tiempo (mediante la anotación horaria de Unix).

{ "domain": "867530901", "startTimeFilter": { "oldestDate": 1325376070, "latestDate": 1356998399 }, "tagFilter": { "tag": "music purchase" } }

Ejemplo de solicitud y respuesta JSON de Amazon SWF

El siguiente ejemplo muestra una solicitud a Amazon SWF para una descripción del dominio que hemos creado previamente. A continuación se muestra la respuesta de Amazon SWF.

Solicitud HTTP POST

POST http://swf.us-east-1.amazonaws.com/ HTTP/1.1 Host: swf.us-east-1.amazonaws.com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.25) Gecko/20111212 Firefox/3.6.25 ( .NET CLR 3.5.30729; .NET4.0E) Accept: application/json, text/javascript, */* Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Connection: keep-alive Content-Type: application/json; charset=UTF-8 X-Requested-With: XMLHttpRequest X-Amz-Date: Sun, 15 Jan 2012 03:13:33 GMT X-Amz-Target: com.amazonaws.swf.service.model.SimpleWorkflowService.DescribeDomain Content-Encoding: amz-1.0 X-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,Algorithm=HmacSHA256,SignedHeaders=Host;X-Amz-Date;X-Amz-Target;Content-Encoding,Signature=IFJtq3M366CHqMlTpyqYqd9z0ChCoKDC5SCJBsLifu4= Referer: http://swf.us-east-1.amazonaws.com/explorer/index.html Content-Length: 21 Pragma: no-cache Cache-Control: no-cache {"name": "867530901"}

Respuesta de Amazon SWF

HTTP/1.1 200 OK Content-Length: 137 Content-Type: application/json x-amzn-RequestId: e86a6779-3f26-11e1-9a27-0760db01a4a8 {"configuration": {"workflowExecutionRetentionPeriodInDays": "60"}, "domainInfo": {"description": "music", "name": "867530901", "status": "REGISTERED"} }

Observe que el protocolo (HTTP/1.1) va seguido de un código de estado (200). Un valor de código de 200 indica el éxito de la operación.

Amazon SWF no serializa valores “null”. Si su analizador de JSON está configurado para serializar valores “null” para las solicitudes, Amazon SWF no los tendrá en cuenta.