paint-brush
管于将 AWS 的开发机器包 v2 转至到 v3 (Javascript) 的目光常见注意事项 - 可以帮助您的高效白皮书 路过@lregalado
7,479 讀數
7,479 讀數

有关将 AWS 开发工具包 v2 迁移到 v3 (Javascript) 的注意事项 - 帮助您的快速指南

经历过 Lorenzo Regalado3m2023/07/22
Read on Terminal Reader

太長; 讀書

AWS SDK for JavaScript (v2) 将于今年 2023 年进入维护模式。我分享一些技巧,可以节省您将规则迁移到 AWS SDK (v3) 的时间
featured image - 有关将 AWS 开发工具包 v2 迁移到 v3 (Javascript) 的注意事项 - 帮助您的快速指南
Lorenzo Regalado HackerNoon profile picture
0-item
AWS SDK for JavaScript (v2) 将于在今年的 (2023 年) 开启保障格局。 v3 以及推送一堆段时光,它是 Node18 的较新 lambda 工作时中涉及到的新手机版本,也是现今的 LTS 网络节点新手机版本。


故此,一旦您想将 lambda 更新时间到 Node18 Lambda 操作时,则须得将 SDK v2 加到现阶段的 lambda 函数值或继承在 Node16 中(您应该推广,但这个是另个个题目)。


新 SDK 版本信息的的优点是相对功能智能化,涉及您需求要的、会直接在较新的 lambda 映像上作为的更小的包各个、Typescript 搭载或者选择在自理解有些 SDK 活动的自理解期间件堆栈(我还没选择)。


转入并不太困难的;家长可不可以是以这种。殊不知,我遭到半个些开一已经并不很深的过程,这将为您减少一点Google归类/建议的时光。

拉姆达

v2:
 const AWS = require('aws-sdk'); const lambda = new AWS.Lambda(options); const result = await lambda.invoke(invokeParams).promise(); const resultPayload = JSON.parse(result.Payload)


v3:
 const { LambdaClient, InvokeCommand } = require('@aws-sdk/client-lambda'); const { toUtf8 } = require('@aws-sdk/util-utf8-node'); const command = new InvokeCommand(invokeParams); const result = await lambda.send(command); const resultPayload = JSON.parse(toUtf8(result.Payload));// Now the result payload is a Uint8 array that needs to be decoded


在撰写本文时,包@aws-sdk/util-utf8-node被标记为转而使用@aws-sdk/util-utf8 。但在 lambda 运行时中,nodejs18.x 尚未包含在内,因此如果您想使用它,则必须将其添加到项目生产依赖项中。

动态数据库

v2:
 const AWS = require('aws-sdk'); dynamoDbClient = new AWS.DynamoDB.DocumentClient(options); await dynamoDbClient.put(params).promise(); await dynamoDbClient.get(params).promise(); await dynamoDbClient.update(params).promise(); await dynamoDbClient.update(params).promise(); await dynamoDb.delete(params).promise(); await dynamoDb.scan(params).promise(); await dynamoDb.query(params).promise();


v3:
 const { DynamoDBClient } = require('@aws-sdk/client-dynamodb'); const { DynamoDBDocument, GetCommand, PutCommand, DeleteCommand, QueryCommand, UpdateCommand, ScanCommand, } = require('@aws-sdk/lib-dynamodb'); const dynamoDbClient = new DynamoDBClient(options); const docClient = DynamoDBDocument.from(dynamoDbClient); await docClient.send(new PutCommand(params)); await docClient.send(new GetCommand(params)); await docClient.send(new UpdateCommand(params)); await docClient.send(new UpdateCommand(params)); await docClient.send(new DeleteCommand(params)); await docClient.send(new ScanCommand(params)); await docClient.send(new QueryCommand(params));


如果您曾经处理 DynamoDB 表中的一些流并使用unmarshall函数 v2:

 const AWS = require('aws-sdk'); const {unmarshall} = AWS.DynamoDB.Converter;


v3:
 const { unmarshall } = require('@aws-sdk/util-dynamodb');

S3

v2:
 const AWS = require('aws-sdk'); const s3Client = new AWS.S3(options); s3Client.upload(params, callBack);


v3:
 const { S3Client } = require('@aws-sdk/client-s3'); const { Upload } = require('@aws-sdk/lib-storage'); const s3Client = new S3Client(options); const parallelUploads3 = new Upload({ client: s3Client, params }); const result = await parallelUploads3.done();

社交网络服务

v2:
 const AWS = require('aws-sdk'); const snsClient = new AWS.SNS(options); await snsClient.publish(data).promise();


v3:
 const { SNSClient, PublishCommand } = require('@aws-sdk/client-sns'); const snsClient = new SNSClient(options); await snsClient.send(new PublishCommand(data));


바카라사이트 바카라사이트 온라인바카라