从版本 1 升级 SDK for JavaScript - Amazon SDK for JavaScript
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

我们已宣布即将终止对 Amazon SDK for JavaScript v2 的支持。建议您迁移到 Amazon SDK for JavaScript v3。有关日期、其他详细信息以及如何迁移的信息,请参阅链接的公告。

从版本 1 升级 SDK for JavaScript

以下说明可帮助您将 SDK for JavaScript 从版本 1 升级到版本 2。

自动转换输入/输出中的 Base64 和时间戳类型

该开发工具包现在可代表用户自动编码和解码 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

现在,该开发工具包将所有服务的请求 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); });

公开的包装元素

如果您使用 AWS.ElastiCacheAWS.RDSAWS.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

删除的客户端属性

从服务对象中删除了 .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(...)