Fazer uma solicitação HTTP para o AWS Data Pipeline - AWS Data Pipeline

Fazer uma solicitação HTTP para o AWS Data Pipeline

Para obter uma descrição completa dos objetos programáticos no AWS Data Pipeline, consulte a Referência de API do AWS Data Pipeline.

Se você não usa nenhum dos SDKs da AWS, pode executar as operações do AWS Data Pipeline por meio de 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 AWS Data Pipeline exige as informações a seguir no cabeçalho de uma solicitação HTTP:

  • host O endpoint do AWS Data Pipeline.

    Para obter informações sobre endpoints, consulte Regiões e endpoints.

  • x-amz-date Você precisa fornecer o time stamp no cabeçalho Date em HTTP ou no cabeçalho x-amz-date da AWS. (Algumas bibliotecas de cliente HTTP não permitem a definição do cabeçalho Date). Quando existe um cabeçalho x-amz-date, o sistema ignora qualquer cabeçalho Date durante a autenticação de uma 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())

  • Authorization O conjunto de parâmetros de autorização que a AWS usa para garantir a validade e a autenticidade da solicitação. Para obter mais informações sobre como criar esse cabeçalho, acesse Processo de assinatura do Signature versão 4.

  • x-amz-target O serviço de destino da solicitação e a operação para os dados, no formato: <<serviceName>>_<<API version>>.<<operationName>>

    Por exemplo, DataPipeline_20121129.ActivatePipeline

  • content-type Especifica o JSON e a versão. Por exemplo, Content-Type: application/x-amz-json-1.0

Veja a seguir um exemplo de cabeçalho para uma solicitação HTTP para ativar um 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

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. Os dados devem estar formatados de acordo com o esquema de dados JSON para cada API do AWS Data Pipeline. O esquema de dados JSON do AWS Data Pipeline define os tipos de dados e parâmetros (como operadores de comparação e constantes de enumeração) disponíveis para cada operação.

Formatar o corpo de uma 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. O exemplo a seguir mostra uma solicitação para colocação de uma definição de pipeline que consiste em três objetos e os seus slots correspondentes.

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

Lidar com resposta HTTP

A seguir são apresentados alguns cabeçalhos importantes na resposta HTTP e a explicação sobre como você deve lidar com eles em seu aplicativo:

  • HTTP/1.1 – Esse cabeçalho é acompanhado de um código de status. O valor de código 200 indica uma operação bem-sucedida. Qualquer outro valor indica um erro.

  • x-amzn-RequestId – Esse cabeçalho contém um ID de solicitação que você pode usar se precisar solucionar problemas de uma solicitação com o AWS Data Pipeline. Um exemplo de ID de solicitação: K2QH8DNOU907N97FNA2GDLL8OBVV4KQNSO5AEMVJF66Q9ASUAAJG.

  • x-amz-crc32 – O AWS Data Pipeline calcula uma soma de verificação CRC32 da carga útil HTTP e retorna essa soma de verificação no cabeçalho x-amz-crc32. Recomendamos que você calcule sua própria soma de verificação CRC32 no lado do cliente e a compare com a do cabeçalho x-amz-crc32. Se as somas de verificação não se corresponderem, é possível que os dados tenham sido corrompidos em trânsito. Se isso acontecer, tente enviar sua solicitação novamente.

Os usuários do SDK da AWS não precisam realizar essa verificação manualmente, pois os SDKs calculam a soma de verificação de cada resposta do Amazon DynamoDB e realizam automaticamente novas tentativas se for detectada falta de correspondência.

Exemplo de solicitação e resposta JSON AWS Data Pipeline

Os exemplos a seguir mostram uma solicitação para criar um novo pipeline. Em seguida, a resposta do AWS Data Pipeline é exibida, incluindo o identificador do pipeline recém-criado.

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

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