Envoi d'une demande HTTP à AWS Data Pipeline - AWS Data Pipeline

AWS Data Pipeline n'est plus disponible pour les nouveaux clients. Les clients existants de AWS Data Pipeline peut continuer à utiliser le service normalement. En savoir plus

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 d'une demande HTTP à AWS Data Pipeline

Pour obtenir une description complète des objets de programmation dans AWS Data Pipeline, consultez le manuel Référence d'API AWS Data Pipeline.

Si vous n'utilisez pas l'un des kits SDK AWS, vous pouvez effectuer des opérations AWS Data Pipeline via HTTP à l'aide de la méthode POST. La méthode POST exige que vous indiquiez l'opération dans l'en-tête de la demande et que vous fournissiez les données de l'opération au format JSON dans le corps de la demande.

Contenu de l'en-tête HTTP

AWS Data Pipeline nécessite les informations suivantes dans l'en-tête d'une demande HTTP :

  • host Le point de terminaison AWS Data Pipeline.

    Pour plus d'informations sur les points de terminaison, consultez Régions et points de terminaison.

  • x-amz-date Vous devez fournir l'horodatage dans l'en-tête HTTP Date ou dans l'en-tête AWS x-amz-date (certaines bibliothèques client HTTP ne vous permettent pas de définir l'en-tête Date). Lorsqu'un en-tête x-amz-date est présent, le système ignore l'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)

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

  • Authorization Ensemble de paramètres d'autorisation qu'AWS utilise pour garantir la validité et l'authenticité de la demande. Pour plus d'informations sur la construction de cet en-tête, consultez Processus de signature Signature Version 4.

  • x-amz-target Service de destination de la demande et de l'opération sur les données, au format suivant : <<serviceName>>_<<API version>>.<<operationName>>

    Par exemple, DataPipeline_20121129.ActivatePipeline

  • content-type Spécifie JSON et la version. Par exemple, Content-Type: application/x-amz-json-1.0

Voici un exemple d'en-tête de demande HTTP d'activation d'un pipeline :

POST / HTTP/1.1 host: https://datapipeline.us-east-1.amazonaws.com x-amz-date: Mon, 12 Nov 2012 17:49:52 GMT x-amz-target: DataPipeline_20121129.ActivatePipeline Authorization: AuthParams Content-Type: application/x-amz-json-1.1 Content-Length: 39 Connection: Keep-Alive

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. Les données doivent être mises en forme conformément au schéma de données JSON pour chaque API AWS Data Pipeline. Le schéma de données JSON d'AWS Data Pipeline définit les types de données et les paramètres (tels que les opérateurs de comparaison et les constantes d'énumération) qui sont disponibles pour chaque opération.

Mise en forme du corps d'une demande 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. L'exemple suivant montre une demande de placement d'une définition de pipeline composée de trois objets et des emplacements correspondants.

{ "pipelineId": "df-00627471SOVYZEXAMPLE", "pipelineObjects": [ {"id": "Default", "name": "Default", "slots": [ {"key": "workerGroup", "stringValue": "MyWorkerGroup"} ] }, {"id": "Schedule", "name": "Schedule", "slots": [ {"key": "startDateTime", "stringValue": "2012-09-25T17:00:00"}, {"key": "type", "stringValue": "Schedule"}, {"key": "period", "stringValue": "1 hour"}, {"key": "endDateTime", "stringValue": "2012-09-25T18:00:00"} ] }, {"id": "SayHello", "name": "SayHello", "slots": [ {"key": "type", "stringValue": "ShellCommandActivity"}, {"key": "command", "stringValue": "echo hello"}, {"key": "parent", "refValue": "Default"}, {"key": "schedule", "refValue": "Schedule"} ] } ] }

Gestion de la réponse HTTP

Voici quelques en-têtes importants de la réponse HTTP et la façon dont vous devez les gérer dans votre application :

  • HTTP/1.1 : cet en-tête est suivi d'un code d'état. La valeur de code 200 indique une opération réussie. Toute autre valeur indique une erreur.

  • x-amzn-RequestId : cet en-tête contient un ID de demande que vous pouvez utiliser pour résoudre une demande avec AWS Data Pipeline. K2QH8DNOU907N97FNA2GDLL8OBVV4KQNSO5AEMVJF66Q9ASUAAJG est un exemple d'ID de demande.

  • x-amz-crc32 : AWS Data Pipeline calcule le total de contrôle CRC32 de la charge utile HTTP et renvoie ce total de contrôle dans un en-tête x-amz-crc32. Nous vous recommandons de calculer votre propre total de contrôle CRC32 côté client et de le comparer avec l'en-tête x-amz-crc32 ; si les totaux de contrôle ne correspondent pas, cela peut indiquer que les données ont été corrompues lors du transit. Si cela se produit, vous devez relancer votre demande.

Les utilisateurs de kits SDK AWS n'ont pas besoin d'effectuer manuellement cette vérification, car les kits SDK calculent le total de contrôle de chaque réponse à partir d'Amazon DynamoDB et font automatiquement une nouvelle tentative si un décalage est détecté.

Exemple de demande et de réponse JSON AWS Data Pipeline

L'exemple suivant montre une demande de création d'un pipeline. Il montre ensuite la réponse d'AWS Data Pipeline, comprenant notamment l'identifiant du pipeline venant d'être créé.

Demande HTTP POST

POST / HTTP/1.1 host: https://datapipeline.us-east-1.amazonaws.com x-amz-date: Mon, 12 Nov 2012 17:49:52 GMT x-amz-target: DataPipeline_20121129.CreatePipeline Authorization: AuthParams Content-Type: application/x-amz-json-1.1 Content-Length: 50 Connection: Keep-Alive {"name": "MyPipeline", "uniqueId": "12345ABCDEFG"}

Réponse d'AWS Data Pipeline

HTTP/1.1 200 x-amzn-RequestId: b16911ce-0774-11e2-af6f-6bc7a6be60d9 x-amz-crc32: 2215946753 Content-Type: application/x-amz-json-1.0 Content-Length: 2 Date: Mon, 16 Jan 2012 17:50:53 GMT {"pipelineId": "df-00627471SOVYZEXAMPLE"}