

AWS SDK for JavaScript v2 はサポート終了となりました。[AWS SDK for JavaScript v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/) に移行することをお勧めします。その他の詳細、移行方法については、こちらの[発表内容](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/)を参照してください。

# 無名コールバック関数の使用
<a name="using-a-callback-function"></a>

`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
  }
});
```

## リクエストオブジェクトとレスポンスオブジェクトへのアクセス
<a name="access-request-response"></a>

コールバック関数内で、JavaScript キーワード `this` は、ほとんどのサービスの基盤となる `AWS.Response` オブジェクトを参照します。次の例では、未加工のレスポンスデータとヘッダーをログに記録してデバッグを支援するため、`httpResponse` オブジェクトの `AWS.Response` プロパティをコールバック関数内で使用します。

```
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` オブジェクトには元のメソッド呼び出しによって送信された `Request` を含む `AWS.Request` プロパティがあるため、行われたリクエストの詳細にアクセスすることもできます。