

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/)を参照してください。

# SDK for JavaScript のセットアップ
<a name="setting-up"></a>

このセクションのトピックでは、ウェブブラウザおよび Node.js で使用するために SDK for JavaScript をインストール方法について説明します。また、SDK でサポートされているウェブサービスにアクセスできるように SDK をロードする方法も示しています。

**注記**  
React Native ディベロッパーは、AWSで新しいプロジェクトを作成するために AWS Amplifyを使用する必要があります。詳細については、[aws-sdk-react-native](https://github.com/amazon-archives/aws-sdk-react-native) アーカイブを参照してください。

**Topics**
+ [前提条件](jssdk-prerequisites.md)
+ [SDK for JavaScript のインストール](installing-jssdk.md)
+ [SDK for JavaScript のロード](loading-the-jssdk.md)
+ [SDK for JavaScript をバージョン 1 からアップグレード](upgrading-from-v1.md)

# 前提条件
<a name="jssdk-prerequisites"></a>

AWS SDK for JavaScript を使用する前に、コードを Node.js またはウェブブラウザのどちらで実行する必要があるかを判断します。その後、以下の操作を実行します。
+ Node.js の場合、Node.js をサーバーにインストールします (まだインストールしていない場合)。
+ ウェブブラウザの場合、サポートが必要なブラウザのバージョンを識別します。

**Topics**
+ [AWS Node.js 環境のセットアップ](setting-up-node.md)
+ [サポートされるウェブブラウザ](browsers-supported.md)

# AWS Node.js 環境のセットアップ
<a name="setting-up-node"></a>

アプリケーションを実行可能な AWS Node.js 環境を設定するには、次のいずれかの方法を使用します。
+ Node.js がプリインストールされた Amazon マシンイメージ (AMI) を選択し、その AMI を使用して Amazon EC2 インスタンスを作成します。Amazon EC2 インスタンスを作成するときは、AWS Marketplace から AMI を選択してください。AWS Marketplace で Node.js を検索し、Node.js (32 ビットまたは 64 ビット) がプリインストールされたバージョンを含む AMI オプションを選択します。
+ Amazon EC2 インスタンスを作成して、Node.js をインストールします。Amazon Linux インスタンスで Node.js をインストールする方法の詳細については、[チュートリアル: Amazon EC2 インスタンスでの Node.js のセットアップ](setting-up-node-on-ec2-instance.md)を参照してください。
+ AWS Lambdaを使用して、Node.js を Lambda 関数として実行し、サーバーレス環境を作成します。Lambda 関数内で Node.js を使用する方法の詳細は、*AWS Lambda デベロッパーガイド*の[プログラミングモデル (Node.js)](https://docs.aws.amazon.com/lambda/latest/dg/programming-model.html)を参照してください。
+ Node.js アプリケーションをAWS Elastic Beanstalk にデプロイします。Elastic Beanstalk で Node.js を使用する方法の詳細については、*AWS Elastic Beanstalk デベロッパーガイド*の [Node.js アプリケーションを AWS Elastic Beanstalk にデプロイする](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.html)を参照してください。

# サポートされるウェブブラウザ
<a name="browsers-supported"></a>

SDK for JavaScript では、以下の最小バージョンを含む、最近のすべてのウェブブラウザがサポートされています。


****  

| ブラウザ | バージョン | 
| --- | --- | 
| Google Chrome | 28.0\$1 | 
| Mozilla Firefox | 26.0\$1 | 
| OPERA | 17.0\$1 | 
| Microsoft Edge | 25.10\$1 | 
| Windows Internet Explorer | 該当なし | 
| Apple Safari | 5\$1 | 
| Android ブラウザ | 4.3\$1 | 

**注記**  
AWS Amplify などのフレームワークは、SDK for JavaScript と同じブラウザをサポートしない可能性があります。詳細については、フレームワークのドキュメントを参照してください。

# SDK for JavaScript のインストール
<a name="installing-jssdk"></a>

AWS SDK for JavaScript をインストールするかどうか、またそのインストール方法は、コードが Node.js モジュールで実行されるか、またはブラウザスクリプトで実行されるかによって異なります。

SDK では、一部のサービスはすぐには使用できません。現在 AWS SDK for JavaScript でサポートされているサービスを確認するには、[https://github.com/aws/aws-sdk-js/blob/master/SERVICES.md](https://github.com/aws/aws-sdk-js/blob/master/SERVICES.md) を参照してください。

------
#### [ Node ]

Node.js への AWS SDK for JavaScript のインストールに推奨される方法は、[npm (Node.js パッケージマネージャー)](https://www.npmjs.com/) を使用することです。これを行うには、コマンドラインで以下を入力します。

```
npm install aws-sdk
```

この場合、このエラーメッセージが表示されます。

```
npm WARN deprecated node-uuid@1.4.8: Use uuid module instead
```

コマンドラインで以下のコマンドを入力します。

```
npm uninstall --save node-uuid
npm install --save uuid
```

------
#### [ Browser ]

ブラウザスクリプトで使用するために、SDK をインストールする必要はありません。HTML ページのスクリプトを使用して、ホスティングされた SDK パッケージを Amazon Web Services から直接ロードできます。ホスティングされた SDK パッケージは、クロスオリジンリソース共有 (CORS) を強制する AWS のサービスのサブセットをサポートしています。詳細については、「[SDK for JavaScript のロード](loading-the-jssdk.md)」を参照してください。

SDK のカスタムビルドを作成して、使用する特定のウェブサービスとバージョンを選択できます。次に、ローカル開発用のカスタム SDK パッケージをダウンロードし、アプリケーションで使用するためにホスティングします。SDK のカスタムビルドの作成方法については、「[ブラウザ用 SDK の構築](building-sdk-for-browsers.md)」を参照してください。

GitHub からの現在の AWS SDK for JavaScript の縮小版および非縮小版の頒布可能バージョンは、以下でダウンロードできます。

[https://github.com/aws/aws-sdk-js/tree/master/dist](https://github.com/aws/aws-sdk-js/tree/master/dist)

------

## Bower を使用したインストール
<a name="w2aac13c11b9"></a>

[Bower](https://bower.io) は、ウェブのパッケージマネージャーです。Bower をインストールすると、それを使用して SDK をインストールできます。Bower を使用して SDK をインストールするには、ターミナルウィンドウに以下のコマンドを入力します。

```
bower install aws-sdk-js
```

# SDK for JavaScript のロード
<a name="loading-the-jssdk"></a>

SDK for JavaScript をロードする方法は、ウェブブラウザで実行するためにロードするか、Node.js で実行するためにロードするかによって異なります。

SDK では、一部のサービスはすぐには使用できません。現在 AWS SDK for JavaScript でサポートされているサービスを確認するには、[https://github.com/aws/aws-sdk-js/blob/master/SERVICES.md](https://github.com/aws/aws-sdk-js/blob/master/SERVICES.md) を参照してください。

------
#### [ Node.js ]

SDK のインストール後、`require` を使用してノードアプリケーションに AWS パッケージをロードできます。

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

------
#### [ React Native ]

React Native プロジェクトで SDK を使用するには、まず npm を使用して SDK をインストールします。

```
npm install aws-sdk
```

次のコードを使用して、アプリケーションで SDK の React Native 互換バージョンを参照します。

```
var AWS = require('aws-sdk/dist/aws-sdk-react-native');
```

------
#### [ Browser ]

SDK の使用を開始するための最も簡単な方法は、ホスティングされた SDK パッケージを直接 Amazon Web Services からロードすることです。これを行うには、次の形式で `<script>` 要素を HTML ページに追加します。​

```
<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` (または `window.AWS`) から SDK が利用可能になります。

[browserify](http://browserify.org) を使用してコードとモジュールの依存関係をバンドルする場合、Node.js と同じように、`require` を使用して SDK をロードします。

------

# SDK for JavaScript をバージョン 1 からアップグレード
<a name="upgrading-from-v1"></a>

以下の注意事項は、SDK for JavaScript をバージョン 1 からバージョン 2 にアップグレードするのに役立ちます。

## 入出力における Base64 およびタイムスタンプ型の自動変換
<a name="upgrading-from-v1-base64-timestamp-conversion"></a>

SDK は、base64 でエンコードされた値とタイムスタンプ値を、ユーザーに代わって自動的にエンコードおよびデコードするようになりました。この変更は、base64 またはタイムスタンプ値がリクエストにより送信されたか、もしくは base64 でエンコードされた値を許可するレスポンスで返されたすべてのオペレーションに影響します。

以前に base64 を変換したユーザーコードは不要になりました。base64 としてエンコードされた値は、サーバーのレスポンスからバッファオブジェクトとして返されるようになり、バッファ入力として渡すこともできます。たとえば、次のバージョン 1 の `SQS.sendMessage` パラメータがあります。

```
var params = {
   MessageBody: 'Some Message',
   MessageAttributes: {
      attrName: {
         DataType: 'Binary',
         BinaryValue: new Buffer('example text').toString('base64')
      }
   }
};
```

これは次のように書き直すことができます。

```
var params = {
   MessageBody: 'Some Message',
   MessageAttributes: {
      attrName: {
         DataType: 'Binary',
         BinaryValue: 'example text'
      }
   }
};
```

メッセージは以下のように読み取られます。

```
sqs.receiveMessage(params, function(err, data) {
  // buf is <Buffer 65 78 61 6d 70 6c 65 20 74 65 78 74>
  var buf = data.Messages[0].MessageAttributes.attrName.BinaryValue;
  console.log(buf.toString()); // "example text"
});
```

## response.data.RequestId を response.requestId に移動しました
<a name="upgrading-from-v1-response-requestid"></a>

SDK は、`response` プロパティ内ではなく、`response.data` オブジェクト上の一貫した場所にすべてのサービスのリクエスト ID を保存するようになりました。これにより、リクエスト ID をさまざまな方法で公開するサービス間での一貫性が向上します。これはまた、`response.data.RequestId` プロパティを `response.requestId` (コールバック関数内では`this.requestId`) に改名した重要な変更です。

コードで、以下のように変更します。

```
svc.operation(params, function (err, data) {
  console.log('Request ID:', data.RequestId);
});
```

項目の変更後:

```
svc.operation(params, function () {
  console.log('Request ID:', this.requestId);
});
```

## 公開されたラッパー要素
<a name="upgrading-from-v1-exposed-wrapper-elements"></a>

`AWS.ElastiCache`、`AWS.RDS`、または `AWS.Redshift` を使用している場合、一部のオペレーションでは、レスポンス内の最上位の出力プロパティを通じてレスポンスにアクセスする必要があります。

たとえば、以前、`RDS.describeEngineDefaultParameters` メソッドは以下を返していました。

```
{ Parameters: [ ... ] }
```

今では、以下を返すようになりました。

```
{ EngineDefaults: { Parameters: [ ... ] } }
```

次の表に、各サービスの影響を受けるオペレーションの一覧が示されています。


****  

| クライアントクラス | オペレーション | 
| --- | --- | 
| `AWS.ElastiCache` | `authorizeCacheSecurityGroupIngress` `createCacheCluster` `createCacheParameterGroup` `createCacheSecurityGroup` `createCacheSubnetGroup` `createReplicationGroup` `deleteCacheCluster` `deleteReplicationGroup` `describeEngineDefaultParameters` `modifyCacheCluster` `modifyCacheSubnetGroup` `modifyReplicationGroup` `purchaseReservedCacheNodesOffering` `rebootCacheCluster` `revokeCacheSecurityGroupIngress` | 
| `AWS.RDS` | `addSourceIdentifierToSubscription` `authorizeDBSecurityGroupIngress` `copyDBSnapshot` `createDBInstance` `createDBInstanceReadReplica` `createDBParameterGroup` `createDBSecurityGroup` `createDBSnapshot` `createDBSubnetGroup` `createEventSubscription` `createOptionGroup` `deleteDBInstance` `deleteDBSnapshot` `deleteEventSubscription` `describeEngineDefaultParameters` `modifyDBInstance` `modifyDBSubnetGroup` `modifyEventSubscription` `modifyOptionGroup` `promoteReadReplica` `purchaseReservedDBInstancesOffering` `rebootDBInstance` `removeSourceIdentifierFromSubscription` `restoreDBInstanceFromDBSnapshot` `restoreDBInstanceToPointInTime` `revokeDBSecurityGroupIngress` | 
| `AWS.Redshift` | `authorizeClusterSecurityGroupIngress` `authorizeSnapshotAccess` `copyClusterSnapshot` `createCluster` `createClusterParameterGroup` `createClusterSecurityGroup` `createClusterSnapshot` `createClusterSubnetGroup` `createEventSubscription` `createHsmClientCertificate` `createHsmConfiguration` `deleteCluster` `deleteClusterSnapshot` `describeDefaultClusterParameters` `disableSnapshotCopy` `enableSnapshotCopy` `modifyCluster` `modifyClusterSubnetGroup` `modifyEventSubscription` `modifySnapshotCopyRetentionPeriod` `purchaseReservedNodeOffering` `rebootCluster` `restoreFromClusterSnapshot` `revokeClusterSecurityGroupIngress` `revokeSnapshotAccess` `rotateEncryptionKey` | 

## 除外されたクライアントプロパティ
<a name="upgrading-from-v1-dropped-client-properties"></a>

`.Client` および `.client` プロパティはサービスオブジェクトから削除されました。サービスクラスで `.Client` プロパティを使用する場合、またはサービスオブジェクトインスタンスで `.client` プロパティを使用する場合は、これらのプロパティをコードから削除します。

以下のコードは、SDK for JavaScript のバージョン 1 で使用されます。

```
var sts = new AWS.STS.Client();
// or
var sts = new AWS.STS();

sts.client.operation(...);
```

次のコードに変更する必要があります。

```
var sts = new AWS.STS();
sts.operation(...)
```