

适用于 JavaScript 的 AWS SDK v2 已终止支持。建议您迁移到 [适用于 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 升级 SDK for JavaScript
<a name="upgrading-from-v1"></a>

以下说明可帮助您将 SDK for JavaScript 从版本 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>

现在，该开发工具包将所有服务的请求 ID 存储到 `response` 对象上一致的位置，而不是 `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` 属性，请从代码中删除这些属性。

以下代码用于 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(...)
```