Solicitações HTTP no Amazon SWF - Amazon Simple Workflow Service

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

Solicitações HTTP no Amazon SWF

Se você não usar um dos SDKs do AWS, poderá executar operações do Amazon Simple Workflow Service (Amazon SWF) por HTTP usando o método de solicitação POST. O método POST exige a especificação da operação no cabeçalho da solicitação e o fornecimento de dados para operação no formato JSON no corpo da solicitação.

Conteúdo de cabeçalho HTTP

O Amazon SWF requer as seguintes informações no cabeçalho de uma solicitação HTTP:

  • host O endpoint do Amazon SWF.

  • x-amz-date Você deve fornecer o registro de data e hora no cabeçalho HTTP Date ou no AWS x-amz-date header (algumas bibliotecas de clientes HTTP não permitem que você defina o cabeçalho Date). Quando existe um cabeçalho x-amz-date, o sistema ignora qualquer cabeçalho Date ao autenticar a solicitação.

    A data precisa ser especificada em um destes três formatos, conforme especificado em HTTP/1.1 RFC:

    • Domingo, 06-Nov-1994 08:49:37 GMT (RFC 822, atualizada pela RFC 1123)

    • Domingo, 06-Nov-94 08:49:37 GMT (RFC 850, substituído por RFC 1036)

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

  • x-amzn-authorization Os parâmetros de solicitação assinados no formato:

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

    AWS3 - Essa é uma tag AWS específica de implementação que indica a versão de autenticação usada para assinar a solicitação (atualmente, para o Amazon SWF, esse valor é sempre AWS3).

    AWSAccessKeyId - Seu ID de chave de acesso ao AWS.

    Algorithm HmacSHA256 o algoritmo usado para criar o valor HMAC-SHA da "string-to-sign", como ou .

    Signature - Base64( Algorithm( StringToSign, SigningKey ) ). Para obter mais detalhes, consulte Cálculo da assinatura HMAC-SHA para o Amazon SWF

    SignedHeaders - (opcional) se estiver presente, deverá conter uma lista de todos os cabeçalhos HTTP usados no cálculo de HttpHeaders em formato canônico. Um caractere de ponto e vírgula (;) (caractere ASCII 59) deve ser usado como delimitador para valores de lista.

  • x-amz-target - O serviço de destino da solicitação e a operação para os dados, no formato

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

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

  • content-type - O tipo precisa especificar JSON e o conjunto de caracteres, como application/json; charset=UTF-8

O seguinte é um cabeçalho de exemplo para uma solicitação HTTP para criar um domínio.

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"}

Aqui está um exemplo da resposta HTTP correspondente.

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

Conteúdo do corpo HTTP

O corpo de uma solicitação HTTP apresenta os dados da operação especificada no cabeçalho da solicitação HTTP. Use o formato de dados JSON para transmitir valores e estrutura de dados, simultaneamente. Os elementos podem ser aninhados dentro de outros elementos usando a notação de colchetes. Por exemplo, o seguinte mostra uma solicitação para listar todas as execuções de fluxo de trabalho iniciadas entre dois pontos especificados no tempo - usando a notação Unix Time.

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

Exemplo de solicitação e resposta JSON do Amazon SWF

O exemplo a seguir mostra uma solicitação ao Amazon SWF para obter uma descrição do domínio que criamos anteriormente. Em seguida, ele mostra a resposta do SWF da Amazon.

Solicitação 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"}

Resposta do 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 o protocolo (HTTP/1.1) é seguido por um código de status (200). Um valor de código de 200 indica uma operação bem-sucedida.

O Amazon SWF não serializa valores nulos. Se o analisador JSON estiver configurado para serializar valores nulos para solicitações, o Amazon SWF os ignorará.