AWS SDK for JavaScript v2 のサポート終了が間近に迫っていることが発表
レスポンスオブジェクトの使用
サービスオブジェクトメソッドは呼び出されると、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
メンバーが文字列値を保持しているため、imageFile
の S
子メンバーの値を通してイメージ自体のファイル名にアクセスします。
返されたデータによるページング
サービスリクエストによって返された 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();