AWS SDK for JavaScript v2 のサポート終了が間近に迫っていることが発表
無名コールバック関数の使用
AWS.Request
オブジェクトを作成する各サービスオブジェクトメソッドは、最後のパラメータとして無名コールバック関数を使用できます。このコールバック関数の署名は次のとおりです。
function(error, data) { // callback handling code }
このコールバック関数が実行されるのは、成功したレスポンスまたはエラーデータが返されたときです。メソッドの呼び出しに成功すると、レスポンスの内容は data
パラメータでコールバック関数に利用可能になります。呼び出しが成功しない場合、エラーの詳細は error
パラメータに記載されます。
通常、コールバック関数内のコードはエラーをテストし、エラーが返された場合はそれを処理します。エラーが返されない場合、コードは data
パラメータからレスポンス内のデータを取得します。コールバック関数の基本的な形式は次の例のようになります。
function(error, data) { if (error) { // error handling code console.log(error); } else { // data handling code console.log(data); } }
前の例では、エラーまたは返されたデータの詳細がコンソールのログに記録されます。サービスオブジェクトのメソッド呼び出しの一部として渡されるコールバック関数の例を、次に示します。
new AWS.EC2({apiVersion: '2014-10-01'}).describeInstances(function(error, data) { if (error) { console.log(error); // an error occurred } else { console.log(data); // request succeeded } });
リクエストオブジェクトとレスポンスオブジェクトへのアクセス
コールバック関数内で、JavaScript キーワード this
は、ほとんどのサービスの基盤となる AWS.Response
オブジェクトを参照します。次の例では、未加工のレスポンスデータとヘッダーをログに記録してデバッグを支援するため、AWS.Response
オブジェクトの httpResponse
プロパティをコールバック関数内で使用します。
new AWS.EC2({apiVersion: '2014-10-01'}).describeInstances(function(error, data) { if (error) { console.log(error); // an error occurred // Using this keyword to access AWS.Response object and properties console.log("Response data and headers: " + JSON.stringify(this.httpResponse)); } else { console.log(data); // request succeeded } });
また、AWS.Response
オブジェクトには元のメソッド呼び出しによって送信された AWS.Request
を含む Request
プロパティがあるため、行われたリクエストの詳細にアクセスすることもできます。