JavaScript 從版本 1 升級的 SDK - AWS SDK for JavaScript

我們宣布即將推出 end-of-support AWS SDK for JavaScript v2。建議您遷移至 AWS SDK for JavaScript v3。如需日期、其他詳細資訊和如何遷移的資訊,請參閱連結公告。

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

JavaScript 從版本 1 升級的 SDK

下列注意事項可協助您將 SDK 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" });

移動響應. 數據。 RequestId 回應. 請求

現在,軟體開發套件會在 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); });

公開的包裝函數元素

如果使用 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 版本 1 搭配使用,用於 JavaScript:

var sts = new AWS.STS.Client(); // or var sts = new AWS.STS(); sts.client.operation(...);

您應將其變更為下列程式碼。

var sts = new AWS.STS(); sts.operation(...)