

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="creating-and-calling-service-objects"></a>

JavaScript API は、利用可能なほとんどの AWS のサービスをサポートしています。JavaScript API の各サービスクラスは、そのサービス内のすべての API 呼び出しへのアクセスを提供します。JavaScript API のサービスクラス、オペレーション、およびパラメータの詳細については、「[API リファレンス](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/index.html)」を参照してください。

Node.js で SDK を使用する場合、`require` を使用して SDK パッケージをアプリケーションに追加します。これにより、現在のすべてのサービスがサポートされます。

```
var AWS = require('aws-sdk');
```

ブラウザの JavaScript で SDK を使用する場合、AWS がホストする SDK パッケージを使用して、SDK パッケージをブラウザスクリプトにロードします。SDK パッケージをロードするには、次の `<script>` 要素を追加します。

```
<script src="https://sdk.amazonaws.com/js/aws-sdk-SDK_VERSION_NUMBER.min.js"></script>
```

最新の SDK\$1VERSION\$1NUMBER を確認するには、[AWS SDK for JavaScriptAPI リファレンスガイド](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/)で SDK for JavaScript の API リファレンスを参照してください。

デフォルトのホスティングされた SDK パッケージは、利用可能な AWS のサービスのサブセットをサポートしています。ブラウザ用のホスティングされた SDK パッケージのデフォルトサービスリストについては、API リファレンスの「[サポートされるサービス](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/#Supported_Services)」を参照してください。CORS セキュリティチェックが無効になっている場合は、SDK を他のサービスで使用することができます。この場合、カスタムバージョンの SDK を構築して、必要な追加のサービスを含めることができます。SDK のカスタムバージョン構築の詳細については、「[ブラウザ用 SDK の構築](building-sdk-for-browsers.md)」を参照してください。

## 個々のサービスを要求する
<a name="requiring-individual-services"></a>

前述のように SDK for JavaScript を要求すると、コードに SDK 全体が含まれます。または、コードで使用される個々のサービスのみを要求するように選択できます。Amazon S3 サービスオブジェクトの作成に使用される以下のコードを検討してください。

```
// Import the AWS SDK
var AWS = require('aws-sdk');

// Set credentials and Region
// This can also be done directly on the service client
AWS.config.update({region: 'us-west-1', credentials: {YOUR_CREDENTIALS}});

var s3 = new AWS.S3({apiVersion: '2006-03-01'});
```

前の例では、`require` 関数は SDK 全体を指定します。Amazon S3 サービスに必要な SDK の部分だけが含まれている場合、ネットワーク上で転送するコードの量、およびコードのメモリオーバーヘッドはかなり少なくなります。個々のサービスを要求するには、すべて小文字のサービスコンストラクタを含めて、示されているように `require` 関数を呼び出します。

```
require('aws-sdk/clients/SERVICE');
```

SDK の Amazon S3 部分のみが含まれている場合、前の Amazon S3 サービスオブジェクトを作成するためのコードは次のようになります。

```
// Import the Amazon S3 service client
var S3 = require('aws-sdk/clients/s3');
 
// Set credentials and Region
var s3 = new S3({
    apiVersion: '2006-03-01',
    region: 'us-west-1', 
    credentials: {YOUR_CREDENTIALS}
  });
```

すべてのサービスをアタッチしなくても、グローバル AWS の名前空間にアクセスできます。

```
require('aws-sdk/global');
```

この手法は、同じ設定を複数の個々のサービスに適用する場合に便利です (たとえば、すべてのサービスに同じ認証情報を提供するなど)。個々のサービスを要求することで、Node.js でのロード時間とメモリ消費量が削減されます。個々のサービスの要求を Browserify や webpack などのバンドルツールと一緒に実行すると、SDK は完全なサイズの数分の 1 になります。これは、IoT デバイスや Lambda 関数など、メモリやディスク容量に制約のある環境で役立ちます。

## サービスオブジェクトの作成
<a name="creating-service-objects"></a>

JavaScript API を介してサービス機能にアクセスするには、まず *サービスオブジェクト*を作成します。このサービスオブジェクトを通じて、基盤となるクライアントクラスが提供する一連の機能にアクセスします。通常、各サービスにつき 1 つのクライアントクラスが用意されています。ただし、一部のサービスでは、複数のクライアントクラス間でサービス機能へのアクセスを分割しています。

機能を使用するには、その機能へのアクセスを提供するクラスのインスタンスを作成する必要があります。次の例は、`AWS.DynamoDB` クライアントクラスからの DynamoDB 用のサービスオブジェクトの作成を示しています。

```
var dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});
```

デフォルトで、サービスオブジェクトにはグローバル設定が構成されます。この設定は、SDK の設定にも使用されます。ただし、そのサービスオブジェクトに固有のランタイム設定データを使用してサービスオブジェクトを設定することができます。グローバル設定を適用した後に、サービス固有の設定データが適用されます。

次の例では、Amazon EC2 サービスオブジェクトが特定のリージョンの設定で作成されますが、それ以外の場合にはグローバル設定が使用されます。

```
var ec2 = new AWS.EC2({region: 'us-west-2', apiVersion: '2014-10-01'});
```

個々のサービスオブジェクトに適用されるサービス固有の設定をサポートすることに加えて、指定されたクラスの、新しく作成されたすべてのサービスオブジェクトに対してサービス固有の設定を適用することもできます。例えば、Amazon EC2 クラスから作成されたすべてのサービスオブジェクトが米国西部 (オレゴン)(`us-west-2`) リージョンを使用するように設定するには、`AWS.config` グローバル設定オブジェクトに以下を追加します。

```
AWS.config.ec2 = {region: 'us-west-2', apiVersion: '2016-04-01'};
```

## サービスオブジェクトの API バージョンのロック
<a name="locking-api-version-of-service-objects"></a>

オブジェクト作成時に `apiVersion` オプションを指定することで、サービスオブジェクトを特定のサービスの API バージョンにロックすることができます。次の例では、特定の API バージョンにロックされている DynamoDB サービスオブジェクトが作成されます。

```
var dynamodb = new AWS.DynamoDB({apiVersion: '2011-12-05'});
```

サービスオブジェクトの API バージョンのロックに関する詳細については、「[API バージョンのロック](locking-api-versions.md)」を参照してください。

## サービスオブジェクトパラメータの指定
<a name="specifying-service-object-parameters"></a>

サービスオブジェクトのメソッドを呼び出す場合、API の必要に応じて JSON でパラメータを渡します。例えば、Amazon S3 では、指定されたバケットとキーのオブジェクトを取得するために、`getObject` メソッドに以下のパラメータを渡します。JSON パラメータを渡す詳細については、「[JSON の使用](working-with-json.md)」を参照してください。

```
s3.getObject({Bucket: 'bucketName', Key: 'keyName'});
```

Amazon S3 パラメータの詳細については、API リファレンスの「[https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html)」を参照してください。

さらに、サービスオブジェクト作成時に、`params` パラメータを使用して個々のパラメータに値をバインドすることができます。サービスオブジェクトの `params` パラメータの値は、サービスオブジェクトによって定義された 1 つ以上のパラメータ値を指定するマップです。次の例は、Amazon S3 サービスオブジェクトの `Bucket` パラメータが `amzn-s3-demo-bucket` という名前のバケットにバインドされていることを示しています。

```
var s3bucket = new AWS.S3({params: {Bucket: 'amzn-s3-demo-bucket'}, apiVersion: '2006-03-01' });
```

サービスオブジェクトをバケットにバインドすることで、`s3bucket` サービスオブジェクトは `amzn-s3-demo-bucket` パラメータ値をデフォルト値として扱い、以降のオペレーションで指定する必要がなくなります。パラメータ値が適用できないオペレーションにオブジェクトを使用すると、バインドされたパラメータ値はすべて無視されます。新しい値を指定してサービスオブジェクトを呼び出すときに、このバインドされたパラメータをオーバーライドできます。

```
var s3bucket = new AWS.S3({ params: {Bucket: 'amzn-s3-demo-bucket'}, apiVersion: '2006-03-01' });
s3bucket.getObject({Key: 'keyName'});
// ...
s3bucket.getObject({Bucket: 'amzn-s3-demo-bucket3', Key: 'keyOtherName'});
```

各メソッドで利用可能なパラメータに関する詳細は、API リファレンスにあります。