

适用于 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`<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` 属性，请从代码中删除这些属性。

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