AWS Data Pipeline に対する HTTP リクエストの実行 - AWS Data Pipeline

AWS Data Pipeline新規のお客様への の提供は終了しました。AWS Data Pipeline の既存のお客様は、通常どおりサービスを引き続き使用できます。詳細

AWS Data Pipeline に対する HTTP リクエストの実行

AWS Data Pipeline のプログラムオブジェクトの詳細については、AWS Data Pipeline API リファレンスを参照してください。

どの AWS SDK も使用しない場合は、POST リクエストメソッドを使用して、HTTP 経由で AWS Data Pipeline オペレーションを実行できます。POST メソッドでは、リクエストのヘッダーでオペレーションを指定し、リクエストの本文に、オペレーションのデータを JSON 形式で入力します。

HTTP ヘッダーの内容

AWS Data Pipeline では、HTTP リクエストのヘッダーに次の情報を入力する必要があります。

  • host AWS Data Pipeline エンドポイント。

    エンドポイントの詳細については、「リージョンとエンドポイント」を参照してください。

  • x-amz-date HTTP の Date ヘッダーまたは AWS の x-amz-date ヘッダーにタイムスタンプを入力する必要があります (一部の HTTP クライアントライブラリでは、Date ヘッダーを設定することができません)。x-amz-date ヘッダーがある場合には、リクエスト認証時に Date ヘッダーが無視されます。

    日付は、HTTP/1.1 RFC で規定されている次の 3 つ形式のいずれかで指定する必要があります。

    • Sun, 06 Nov 1994 08:49:37 GMT (RFC 822、RFC 1123 により更新)

    • Sunday, 06-Nov-94 08:49:37 GMT (RFC 850、RFC 1036 により廃止)

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

  • Authorization AWS がリクエストの有効性と正当性を確保するために使用する、認可パラメータのセット。このヘッダーの作成方法の詳細については、「署名バージョン 4 の署名プロセス」を参照してください。

  • x-amz-target - 次の形式で指定する、リクエストの送信先サービスおよびデータのオペレーション<<serviceName>>_<<API version>>.<<operationName>>

    例: DataPipeline_20121129.ActivatePipeline

  • content-type JSON とバージョンを指定します。例: Content-Type: application/x-amz-json-1.0

次に、パイプラインをアクティブ化する HTTP リクエストのサンプルヘッダーの例を示します。

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

HTTP 本文の内容

HTTP リクエストの本文には、HTTP リクエストのヘッダーで指定されたオペレーションのデータが含まれます。このデータは、各 AWS Data Pipeline API の JSON データスキーマに従って形式が設定されている必要があります。AWS Data Pipeline の JSON データスキーマは、各オペレーションで使用できる、データとパラメータの型(比較演算子や列挙定数など)を定義します。

HTTP リクエストの本文の形式の設定

JSON データ形式を使用すると、データ値とデータ構造を同時に送信できます。エレメントは、ブラケット表記を使用することで他のエレメント内にネストすることができます。次の例は、3 つのオブジェクトおよび対応するスロットから成るパイプライン定義を送信するためのリクエストを示しています。

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

HTTP 応答の処理

HTTP 応答の重要なヘッダーと、それらをアプリケーション内で扱う方法を示します。

  • HTTP/1.1 – このヘッダーにはステータスコードが続きます。コードの値 200 は、オペレーションが成功したことを示します。その他の値はエラーを示します。

  • x-amzn-RequestId – このヘッダーには、AWS Data Pipeline を使用してリクエストのトラブルシューティングを行う場合に使用するリクエスト ID が含まれています。リクエスト ID は、たとえば K2QH8DNOU907N97FNA2GDLL8OBVV4KQNSO5AEMVJF66Q9ASUAAJG のようになります。

  • x-amz-crc32 – AWS Data Pipeline が HTTP ペイロードの CRC32 チェックサムを計算し、x-amz-crc32 ヘッダーでこのチェックサムを返します。クライアント側で独自の CRC32 チェックサムを計算して、x-amz-crc32 ヘッダーと比較することをお勧めします。チェックサムが一致しない場合は、データが送信中に壊れた可能性があります。その場合は、リクエストを再試行する必要があります。

Amazon DynamoDB からの各返信のチェックサムを SDK が計算し、不一致が検出された場合には自動的に再試行されるため、AWS SDK のユーザーは、この確認を手動で行う必要はありません。

AWS Data Pipeline JSON のリクエストと応答のサンプル

以下の例は新しいパイプラインを作成するためのリクエストを示しています。次に、新しく作成されたパイプラインの ID を含む AWS Data Pipeline 応答を示します。

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

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