

 適用於 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` `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(...)
```