paint-brush
AWS SDK v2'den v3'e (Javascript) Geçiş Hakkında Notlar - Size Yardımcı Olacak Hızlı Kılavuzile@lregalado
7,548 okumalar
7,548 okumalar

AWS SDK v2'den v3'e (Javascript) Geçiş Hakkında Notlar - Size Yardımcı Olacak Hızlı Kılavuz

ile Lorenzo Regalado3m2023/07/22
Read on Terminal Reader
Read this story w/o Javascript

Çok uzun; Okumak

AWS SDK for JavaScript (v2), bu yıl 2023'te bakım moduna alınacak. AWS SDK'ya (v3) geçişte zamandan tasarruf etmenizi sağlayacak bazı ipuçları paylaşıyorum.
featured image - AWS SDK v2'den v3'e (Javascript) Geçiş Hakkında Notlar - Size Yardımcı Olacak Hızlı Kılavuz
Lorenzo Regalado HackerNoon profile picture
0-item

AWS SDK for JavaScript (v2) bu yıl (2023) bakım moduna geçirilecek. V3 bir süredir mevcut ve aynı zamanda mevcut LTS düğümü sürümü olan Node18 için daha yeni lambda çalışma zamanına dahil edilen sürümdür.


Dolayısıyla, lambdalarınızı Node18 Lambda çalışma zamanına güncellemek istiyorsanız, SDK v2'yi mevcut lambda işlevinize eklemeniz veya Node16'da kalmanız gerekir ( kendi çalışma zamanınızı yuvarlayabilirsiniz, ancak bu başka bir konudur).


Yeni SDK sürümünün avantajları arasında ihtiyacınız olan şeyler de dahil olmak üzere daha fazla modülerlik, doğrudan yeni lambda görüntüsünde gönderildiği için daha küçük paket boyutu, TypeScript desteği ve bazı SDK davranışlarını özelleştirmek için özel bir ara yazılım yığını (henüz kullanmadım) yer alıyor. .


Taşımak çok zor değil; bu dokümanı takip edebilirsiniz. Ancak, size Google'da arama/sorgulama zamanından tasarruf etmenizi sağlayacak, ilk başta bariz olmayan bazı ayrıntılarla karşılaştım.

Lambda

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


Yazma sırasında @aws-sdk/util-utf8-node paketi , @aws-sdk/util-utf8 lehine kullanımdan kaldırılmış olarak işaretlendi. Ancak lambda çalışma zamanında nodejs18.x henüz dahil edilmemiştir, dolayısıyla onu kullanmak istiyorsanız proje üretim bağımlılıklarınıza eklemeniz gerekir.

DinamoDB

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 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 DeleteCommand(params)); await docClient.send(new ScanCommand(params)); await docClient.send(new QueryCommand(params));


Bir DynamoDB tablosundan bazı akışları işlediyseniz ve unmarshall işlevini kullandıysanız 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();

SNS

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));