Realización de una solicitud HTTP a AWS Data Pipeline
Para obtener una descripción completa de los objetos de programación de AWS Data Pipeline, consulte la Referencia de la API de AWS Data Pipeline.
Si no usa ninguno de los SDK de AWS, puede realizar operaciones de AWS Data Pipeline 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
AWS Data Pipeline requiere que figure la siguiente información en el encabezado de una solicitud HTTP:
-
host
El punto de enlace de AWS Data Pipeline.Para obtener información sobre los puntos de enlace, consulte Regiones y puntos de conexión.
-
x-amz-date
Debe proporcionar la marca temporal que figura en el encabezado Date de HTTP o en el encabezado x-amz-date de AWS. (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 durante la autenticación de 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)
-
-
Authorization
El conjunto de parámetros de autorización que AWS usa para garantizar la validez y autenticidad de la solicitud. Para obtener más información acerca de la creación de este encabezado, vaya a Proceso de firma Signature Version 4. -
x-amz-target
El servicio de destino de la solicitud y la operación de los datos, en el formato:<<serviceName>>_<<API version>>.<<operationName>>
Por ejemplo,
DataPipeline_20121129.ActivatePipeline
. -
content-type
Especifica JSON y la versión. Por ejemplo,Content-Type: application/x-amz-json-1.0
.
A continuación se muestra un ejemplo de un encabezado en una solicitud HTTP para activar una canalización.
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
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. Los datos deben formatearse de acuerdo con el esquema de datos JSON para cada API de AWS Data Pipeline. El esquema de datos JSON de AWS Data Pipeline define los tipos de datos y parámetros (como operadores de comparación y constantes de enumeración) disponibles para cada operación.
Formatear el cuerpo de una 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. En el siguiente ejemplo se muestra una solicitud para poner una definición de la canalización compuesta de tres objetos y sus slots correspondientes.
{ "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"} ] } ] }
Gestionar la respuesta HTTP
Estos son algunos encabezados importantes en la respuesta HTTP y cómo debe gestionarlos en su aplicación:
-
HTTP/1.1: este encabezado viene seguido de un código de estado. Un valor de código de 200 indica el éxito de la operación. Cualquier otro valor indica un error.
-
x-amzn-RequestId: este encabezado contiene un ID de solicitud que puede usar si tiene que solucionar los problemas de una solicitud con AWS Data Pipeline. Un ejemplo de un ID de solicitud es K2QH8DNOU907N97FNA2GDLL8OBVV4KQNSO5AEMVJF66Q9ASUAAJG.
-
x-amz-crc32: AWS Data Pipeline calcula una suma de comprobación CRC32 de la carga de HTTP y devuelve esta suma de comprobación en el encabezado x-amz-crc32. Recomendamos que calcule su propia suma de comprobación CRC32 en el lado del cliente y la compare con el encabezado x-amz-crc32; si las sumas de comprobación no coinciden, podría indicar que los datos sufrieron daños en tránsito. Si esto ocurre, debería volver a realizar la solicitud.
No es necesario que los usuarios de SDK de AWS realicen manualmente esta verificación, ya que los SDK calculan la suma de comprobación de cada respuesta desde Amazon DynamoDB y reintentan automáticamente si se detecta una discordancia.
Ejemplo de solicitud y respuesta JSON de AWS Data Pipeline
En los siguientes ejemplos se muestra una solicitud para crear una nueva canalización. A continuación, se muestra la respuesta de AWS Data Pipeline, incluido el identificador de canalización de la canalización recién creada.
Solicitud 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"}
Respuesta de 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"}