

 適用於 JavaScript 的 AWS SDK v2 已end-of-support。我們建議您遷移至 [適用於 JavaScript 的 AWS SDK 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/)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定適用於 JavaScript 的 SDK
<a name="setting-up"></a>

本節中的主題說明如何安裝適用於 JavaScript 的 SDK，以便在 Web 瀏覽器和 Node.js 中使用。該主題還會示範如何載入軟體開發套件，以便存取軟體開發套件支援的 Web 服務。

**注意**  
React Native 開發人員應使用 AWS Amplify 來建立新專案 AWS。如需詳細資訊，請參閱 [aws-sdk-react-native](https://github.com/amazon-archives/aws-sdk-react-native) 存檔。

**Topics**
+ [先決條件](jssdk-prerequisites.md)
+ [安裝適用於 JavaScript 的 SDK](installing-jssdk.md)
+ [載入適用於 JavaScript 的 SDK](loading-the-jssdk.md)
+ [從第 1 版升級適用於 JavaScript 的 SDK](upgrading-from-v1.md)

# 先決條件
<a name="jssdk-prerequisites"></a>

使用 之前 適用於 JavaScript 的 AWS SDK，請先判斷您的程式碼是否需要在 Node.js 或 Web 瀏覽器中執行。之後，請執行下列操作：
+ 若要使用 Node.js，請在伺服器上安裝 Node.js (如果尚未安裝)。
+ 若要使用 Web 瀏覽器，則請識別需要支援的瀏覽器版本。

**Topics**
+ [設定 AWS Node.js 環境](setting-up-node.md)
+ [支援的 Web 瀏覽器](browsers-supported.md)

# 設定 AWS Node.js 環境
<a name="setting-up-node"></a>

若要設定可在其中執行應用程式的 AWS Node.js 環境，請使用下列任一方法：
+ 選擇預先安裝 Node.js 的 Amazon Machine Image (AMI)，並使用該 AMI 建立 Amazon EC2 執行個體。建立 Amazon EC2 執行個體時，請從 選擇您的 AMI AWS Marketplace。搜尋 Node AWS Marketplace .js 並選擇 AMI 選項，其中包含預先安裝的 Node.js 版本 (32 位元或 64 位元）。
+ 建立 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)。

# 支援的 Web 瀏覽器
<a name="browsers-supported"></a>

適用於 JavaScript 的 SDK 支援所有現代 Web 瀏覽器，包括這些最低版本：


****  

| 瀏覽器 | 版本 | 
| --- | --- | 
| Google Chrome | 28.0 版及更新版本 | 
| Mozilla Firefox | 26.0 版及更新版本 | 
| Opera | 17.0 版及更新版本 | 
| Microsoft Edge | 25.10 版及更新版本 | 
| Windows Internet Explorer | N/A | 
| Apple Safari | 第 5 版及更新版本 | 
| Android 瀏覽器 | 4.3 版及更新版本 | 

**注意**  
 AWS Amplify 等架構可能無法提供與適用於 JavaScript 的 SDK 相同的瀏覽器支援。如需詳細資訊，請參閱架構文件。

# 安裝適用於 JavaScript 的 SDK
<a name="installing-jssdk"></a>

是否及如何安裝 適用於 JavaScript 的 AWS SDK 取決於程式碼是在 Node.js 模組或瀏覽器指令碼中執行。

並不是所有服務皆可立即於開發套件中使用。若要了解 目前支援哪些服務 適用於 JavaScript 的 AWS SDK，請參閱 https：//[https://github.com/aws/aws-sdk-js/blob/master/SERVICES.md](https://github.com/aws/aws-sdk-js/blob/master/SERVICES.md)

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

安裝 適用於 JavaScript 的 AWS SDK for Node.js 的偏好方法是使用 [Node.js 套件管理員 npm。](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 ]

您無需另行安裝，也能在瀏覽器指令碼中使用軟體開發套件。您可以使用 HTML 頁面中的指令碼，直接從 Amazon Web Services 載入託管 SDK 套件。託管 SDK 套件支援強制執行跨來源資源共用 (CORS) AWS 的服務子集。如需詳細資訊，請參閱[載入適用於 JavaScript 的 SDK](loading-the-jssdk.md)。

您可以建立軟體開發套件的自訂建置，然後在當中選取特定 Web 服務和要使用的版本。接著，下載適用於本機開發的自訂軟體開發套件封裝並予以託管，以供應用程式使用。如需建立軟體開發套件自訂建置的詳細資訊，請參閱[建立適用於瀏覽器的軟體開發套件](building-sdk-for-browsers.md)。

您可以從 適用於 JavaScript 的 AWS SDK GitHub 下載目前 的精簡和非精簡可分發版本，網址為：

[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) 是適用於 Web 的套件管理工具。Bower 安裝完畢後，您即可使用該工具來安裝軟體開發套件。若要使用 Bower 安裝軟體開發套件，請在終端機視窗中輸入以下指令：

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

# 載入適用於 JavaScript 的 SDK
<a name="loading-the-jssdk"></a>

載入適用於 JavaScript 的 SDK 的方式取決於您要載入它以在 Web 瀏覽器或 Node.js 中執行。

並不是所有服務皆可立即於開發套件中使用。若要了解 目前支援哪些服務 適用於 JavaScript 的 AWS SDK，請參閱 https：//[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 之後，您可以使用 在節點應用程式中載入 AWS 套件`require`。

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

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

若要在 React Native 專案中運用軟體開發套件，請先透過 npm 安裝軟體開發套件：

```
npm install aws-sdk
```

在應用程式中使用下列程式碼，以參考 React Native 相容的軟體開發套件版本：

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

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

開始使用軟體開發套件的最快方法是直接從 Amazon Web Services 載入託管軟體開發套件套件。若要這麼做，請以下列格式，將 `<script>` 元素加入您的 HTML 網頁：​

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

若要尋找目前的 SDK\$1VERSION\$1NUMBER，請參閱《 API 參考指南》中適用於 JavaScript 的 SDK 的 API 參考。 [適用於 JavaScript 的 AWS SDK](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/)

當您將軟體開發套件載入至頁面後，便可從全域變數 `AWS` (或 `window.AWS`) 取得該軟體開發套件。

如果您是使用 [browserify](http://browserify.org) 來綁定程式碼和模組相依性，即可使用 `require` 載入軟體開發套件，如同在 Node.js 中的做法一般。

------

# 從第 1 版升級適用於 JavaScript 的 SDK
<a name="upgrading-from-v1"></a>

下列備註可協助您將適用於 JavaScript 的 SDK 從第 1 版升級至第 2 版。

## 自動轉換輸入/輸出上的 Base64 和時間戳記類型
<a name="upgrading-from-v1-base64-timestamp-conversion"></a>

現在，軟體開發套件能代表使用者自動編碼 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>

現在，軟體開發套件會在 `response` 物件上的同一位置存放所有服務請求 ID，而不是存放在 `response.data` 屬性內部。針對以不同方式公開請求 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` 屬性，請從程式碼中移除這些屬性。

下列程式碼與適用於 JavaScript 的 SDK 第 1 版搭配使用：

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

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

您應將其變更為下列程式碼。

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