レスポンスオブジェクトの使用 - AWS SDK for JavaScript

AWS SDK for JavaScript v2 のサポート終了が間近に迫っていることが発表されています。AWS SDK for JavaScript v3 に移行することをお勧めします。日付、その他の詳細、移行方法については、リンク先の発表内容を参照してください。

レスポンスオブジェクトの使用

サービスオブジェクトメソッドは呼び出されると、AWS.Response オブジェクトをコールバック関数に渡すことで返します。AWS.Response オブジェクトのプロパティを通じて、レスポンスの内容にアクセスします。レスポンスの内容へのアクセスに使用する AWS.Response オブジェクトには、2 つのプロパティがあります。

  • data プロパティ

  • error プロパティ

標準のコールバックメカニズムを使用する場合、次の例に示すように、これら 2 つのプロパティは無名コールバック関数のパラメータとして提供されています。

function(error, data) { if (error) { // error handling code console.log(error); } else { // data handling code console.log(data); } }

レスポンスオブジェクトで返されたデータへのアクセス

AWS.Response オブジェクトの data プロパティには、サービスリクエストによって戻された、シリアル化されたデータが含まれます。リクエストが成功すると、data プロパティには、返されたデータへのマップを含むオブジェクトが含まれます。エラーが発生した場合、data プロパティは null になることがあります。

これは、DynamoDB テーブルの getItem メソッドを呼び出して、ゲームの一部として使用するイメージファイルのファイル名を取得する例です。

// Initialize parameters needed to call DynamoDB var slotParams = { Key : {'slotPosition' : {N: '0'}}, TableName : 'slotWheels', ProjectionExpression: 'imageFile' }; // prepare request object for call to DynamoDB var request = new AWS.DynamoDB({region: 'us-west-2', apiVersion: '2012-08-10'}).getItem(slotParams); // log the name of the image file to load in the slot machine request.on('success', function(response) { // logs a value like "cherries.jpg" returned from DynamoDB console.log(response.data.Item.imageFile.S); }); // submit DynamoDB request request.send();

この例では、DynamoDB テーブルは slotParams のパラメータで指定されたスロットマシンプルの結果を示すイメージのルックアップです。

getItem メソッドの呼び出しが成功すると、AWS.Response オブジェクトの data プロパティには DynamoDB が返す Item オブジェクトが含まれます。返されるデータは、リクエストの ProjectionExpression パラメータに従ってアクセスされます。この場合、これは Item オブジェクトの imageFile メンバーを表しています。imageFile メンバーが文字列値を保持しているため、imageFileS 子メンバーの値を通してイメージ自体のファイル名にアクセスします。

返されたデータによるページング

サービスリクエストによって返された data プロパティの内容が複数のページにわたる場合があります。response.nextPage メソッドを呼び出すことで、次のページのデータにアクセスできます。このメソッドは新しいリクエストを送信します。リクエストからのレスポンスは、コールバックまたは、成功リスナーとエラーリスナーのどちらかでキャプチャできます。

response.hasNextPage メソッドを呼び出すことで、サービスリクエストによって返されたデータに追加のデータページがあるかどうかを確認できます。このメソッドは、response.nextPage を呼び出すと追加のデータが返されるかどうかを示すブール値を返します。

s3.listObjects({Bucket: 'bucket'}).on('success', function handlePage(response) { // do something with response.data if (response.hasNextPage()) { response.nextPage().on('success', handlePage).send(); } }).send();

レスポンスオブジェクトからエラー情報へのアクセス

AWS.Response オブジェクトの error プロパティには、サービスエラーまたは転送エラーが発生した場合に利用可能なエラーデータが含まれます。返されるエラーは次の形式になります。

{ code: 'SHORT_UNIQUE_ERROR_CODE', message: 'a descriptive error message' }

エラーが発生した場合、data プロパティの値は null です。エラー状態にある可能性のあるイベントを処理する場合、data プロパティの値にアクセスする前に、error プロパティが設定されているかどうかを常に確認してください。

生成元リクエストオブジェクトへのアクセス

request プロパティは、生成元の AWS.Request オブジェクトへのアクセスを提供します。元の AWS.Request オブジェクトを参照して、送信された元のパラメータにアクセスするのに便利です。次の例では、request プロパティを使用して元のサービスリクエストの Key パラメータにアクセスします。

s3.getObject({Bucket: 'bucket', Key: 'key'}).on('success', function(response) { console.log("Key was", response.request.params.Key); }).send();