Envoi de demandes HTTP à Amazon SWF - Amazon Simple Workflow Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Envoi de demandes HTTP à Amazon SWF

Si vous n'utilisez pas l'un des kitsAWSSDK, vous pouvez effectuer des opérations Amazon Simple Workflow Service (Amazon SWF) via HTTP à l'aide de la méthode POST. La méthode POST nécessite que vous définissiez l'opération dans l'en-tête de la requête et que vous fournissiez les données de l'opération au format JSON dans le corps de la requête.

Contenu de l'en-tête HTTP

Amazon SWF nécessite les informations suivantes dans l'en-tête d'une demande HTTP :

  • hostLe point de terminaison Amazon SWF.

  • x-amz-dateVous devez fournir l'horodatage dans le format HTTPDatel'en-tête ou leAWS x-amz-date header(certaines bibliothèques client HTTP ne vous permettent pas de définir la valeurDateen-tête). Lorsqu'un en-tête x-amz-date est présent, le système ignore tout en-tête Date lors de l'authentification de la demande.

    La date doit être spécifiée dans l'un des formats suivants, comme indiqué dans le RFC HTTP/1.1 :

    • Sun, 06 Nov 1994 08:49:37 GMT (RFC 822, mis à jour par RFC 1123)

    • Sunday, 06-Nov-94 08:49:37 GMT (RFC 850, rendu obsolète par RFC 1036)

    • Dim 6 nov 08:49:37 1994 (format asctime() ANSI C)

  • x-amzn-authorization Les paramètres de requête signés au format :

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

    AWS3— Il s'agit d'unAWSbalise spécifique à l'implémentation qui indique la version d'authentification utilisée pour signer la demande (actuellement, pour Amazon SWF, cette valeur est toujoursAWS3).

    AWSAccessKeyId— VotreAWSID de clé d'accès.

    Algorithm— L'algorithme utilisé pour créer la valeur HMAC-SHA de la chaîne de signature, commeHmacSHA256ouHmacSHA1.

    Signature— Base64 (Algorithm (StringToSign, SigningKey))). Pour en savoir plus, consultez la section Calcul de la signature HMAC-SHA pour Amazon SWF.

    SignedHeaders— (Facultatif) Le cas échéant, ce paramètre doit comporter une liste de tous les en-têtes HTTP utilisés pour le calcul de la valeur HttpHeaders de base. Vous devez utiliser un point virgule (;) (caractère ASCII 59) pour délimiter les valeurs de la liste.

  • x-amz-target— Service de destination de la demande et de l'opération sur les données, au format

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

    Par exemple, com.amazonaws.swf.service.model.SimpleWorkflowService.RegisterDomain

  • content-type— Le type doit spécifier JSON et le jeu de caractères, sous la formeapplication/json; charset=UTF-8

Voici un exemple d'en-tête de requête HTTP utilisé pour créer un domaine.

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

Voici un exemple de la réponse HTTP correspondante.

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

Contenu du corps HTTP

Le corps d'une requête HTTP contient les données de l'opération spécifiée dans l'en-tête de la requête HTTP. Utilisez le format de données JSON pour transmettre simultanément les valeurs de données et la structure de données. Pour imbriquer des éléments dans d'autres, utilisez la notation d'accolade. Voici, par exemple, une demande visant à afficher toutes les exécutions de flux de travail ayant commencé entre les deux points spécifiés dans le tempsavec le format horaire Unix.

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

Exemple de demande et de réponse JSON Amazon SWF

L'exemple suivant illustre l'envoi d'une demande à Amazon SWF pour obtenir une description du domaine que nous avons créé précédemment. Puis, il affiche ensuite la réponse Amazon SWF.

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

Réponse 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"} }

Notez que le protocole (HTTP/1.1) est suivi d'un code d'état (200). La valeur 200 indique une opération réussie.

Amazon SWF ne sérialise pas les valeurs null. Si votre analyseur JSON est configuré pour sérialiser les valeurs null pour les demandes, Amazon SWF les ignore.