Effettuare richieste HTTP ad Amazon SWF - Amazon Simple Workflow Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Effettuare richieste HTTP ad Amazon SWF

Se non si utilizza uno degli strumenti diAWSGli SDK possono effettuare le operazioni Amazon Simple Workflow Service (Amazon SWF) su HTTP utilizzando il metodo di richiesta POST. Per utilizzare il metodo POST devi specificare l'operazione nell'intestazione della richiesta e fornire i dati per l'operazione nel formato JSON nel corpo della richiesta.

Contenuti nell'intestazione HTTP

Amazon SWF richiede le seguenti informazioni nell'intestazione di una richiesta HTTP:

  • hostL'endpoint Amazon SWF.

  • x-amz-dateÈ necessario fornire il timestamp nell'HTTPDatel'intestazione o laAWS x-amz-date header(alcune librerie client HTTP non consentono di impostare le librerie client HTTP)Datel'intestazione). Quando un'intestazione x-amz-date è presente, il sistema ignora qualsiasi intestazione Date all'autenticazione della richiesta.

    La data deve essere specificata in uno dei seguenti tre formati, come indicato nel protocollo HTTP/1.1 RFC:

    • Dom, 06 novembre 1994 08:49:37 GMT (RFC 822, aggiornato da RFC 1123)

    • Domenica, 06-Nov-94 08:49:37 GMT (RFC 850, reso obsoleto da RFC 1036)

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

  • x-amzn-authorization I parametri della richiesta firmata nel formato:

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

    AWS3— Questo è unAWStag specifico dell'implementazione che indica la versione di autenticazione utilizzata per firmare la richiesta (attualmente, per Amazon SWF questo valore è sempreAWS3).

    AWSAccessKeyId— Il tuoAWSID chiave di accesso.

    Algorithm— L'algoritmo utilizzato per creare il valore HMAC-SHA della stringa a segno, ad esempioHmacSHA256oHmacSHA1.

    Signature— Base64 (Algoritmo (StringToSign, Chiave di firma)). Per informazioni dettagliate, consulta Calcolare la firma HMAC-SHA per Amazon SWF

    SignedHeaders— (Facoltativo) Se presente, deve contenere un elenco di tutte le intestazioni HTTP utilizzate nel calcolo HttpHeaders canonicalized. Un singolo punto e virgola (;) (carattere ASCII 59) deve essere utilizzato come delimitatore per i valori dell'elenco.

  • x-amz-target— Il servizio di destinazione della richiesta e l'operazione per i dati, nel formato

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

    Ad esempio, com.amazonaws.swf.service.model.SimpleWorkflowService.RegisterDomain

  • content-type— Il tipo deve specificare JSON e il set di caratteri, comeapplication/json; charset=UTF-8

Il seguente è un esempio di intestazione per una richiesta HTTP per la creazione di 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"}

Di seguito è riportato un esempio della risposta HTTP corrispondente.

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

Contenuto del corpo HTTP

Il corpo di una richiesta HTTP contiene i dati per l'operazione specificata nell'intestazione di una richiesta HTTP. Utilizza il formato dati JSON per trasmettere simultaneamente i valori dei dati e la struttura corrispondente. Gli elementi possono essere annidati all'interno di altri elementi utilizzando la notazione parentesi. Ad esempio, di seguito viene illustrata una richiesta di elencare tutte le esecuzioni del flusso di lavoro iniziate tra due punti specificati nel tempo, utilizzando la notazione Unix Time.

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

Richiesta e risposta Amazon SWF JSON di esempio

L'esempio seguente mostra una richiesta rivolta ad Amazon SWF per la descrizione del dominio che abbiamo creato in precedenza. Poi viene mostrata la risposta Amazon SWF.

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

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

Il protocollo (HTTP/1.1) è seguito dal codice di stato (200). Un valore del codice di 200 indica un'operazione riuscita.

Amazon SWF non serializza valori null. Se il parser JSON è impostato per serializzare i valori null per le richieste, Amazon SWF li ignora.