

 適用於 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/)。

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

# 從第 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`<br />`createCacheCluster`<br />`createCacheParameterGroup`<br />`createCacheSecurityGroup`<br />`createCacheSubnetGroup`<br />`createReplicationGroup`<br />`deleteCacheCluster`<br />`deleteReplicationGroup`<br />`describeEngineDefaultParameters`<br />`modifyCacheCluster`<br />`modifyCacheSubnetGroup`<br />`modifyReplicationGroup`<br />`purchaseReservedCacheNodesOffering`<br />`rebootCacheCluster`<br />`revokeCacheSecurityGroupIngress` | 
| `AWS.RDS` | `addSourceIdentifierToSubscription`<br />`authorizeDBSecurityGroupIngress`<br />`copyDBSnapshot` `createDBInstance`<br />`createDBInstanceReadReplica`<br />`createDBParameterGroup`<br />`createDBSecurityGroup`<br />`createDBSnapshot`<br />`createDBSubnetGroup`<br />`createEventSubscription`<br />`createOptionGroup`<br />`deleteDBInstance`<br />`deleteDBSnapshot`<br />`deleteEventSubscription`<br />`describeEngineDefaultParameters`<br />`modifyDBInstance`<br />`modifyDBSubnetGroup`<br />`modifyEventSubscription`<br />`modifyOptionGroup`<br />`promoteReadReplica`<br />`purchaseReservedDBInstancesOffering`<br />`rebootDBInstance`<br />`removeSourceIdentifierFromSubscription`<br />`restoreDBInstanceFromDBSnapshot`<br />`restoreDBInstanceToPointInTime`<br />`revokeDBSecurityGroupIngress` | 
| `AWS.Redshift` | `authorizeClusterSecurityGroupIngress`<br />`authorizeSnapshotAccess`<br />`copyClusterSnapshot`<br />`createCluster`<br />`createClusterParameterGroup`<br />`createClusterSecurityGroup`<br />`createClusterSnapshot`<br />`createClusterSubnetGroup`<br />`createEventSubscription`<br />`createHsmClientCertificate`<br />`createHsmConfiguration`<br />`deleteCluster`<br />`deleteClusterSnapshot`<br />`describeDefaultClusterParameters`<br />`disableSnapshotCopy`<br />`enableSnapshotCopy`<br />`modifyCluster`<br />`modifyClusterSubnetGroup`<br />`modifyEventSubscription`<br />`modifySnapshotCopyRetentionPeriod`<br />`purchaseReservedNodeOffering`<br />`rebootCluster`<br />`restoreFromClusterSnapshot`<br />`revokeClusterSecurityGroupIngress`<br />`revokeSnapshotAccess`<br />`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(...)
```