जावास्क्रिप्ट (v2) के लिए AWS SDK को इस वर्ष (2023) रखरखाव मोड में डाल दिया जाएगा। v3 कुछ समय से उपलब्ध है, और यह Node18 के लिए नए लैम्ब्डा रनटाइम में शामिल संस्करण है, जो वर्तमान LTS नोड संस्करण भी है।
इसलिए, यदि आप अपने लैम्ब्डा को Node18 लैम्ब्डा रनटाइम में अपडेट करना चाहते हैं, तो आपको SDK v2 को अपने वर्तमान लैम्ब्डा फ़ंक्शन में जोड़ना होगा या Node16 में रहना होगा (आप अपना स्वयं का रनटाइम रोल कर सकते हैं, लेकिन यह एक और विषय है)।
नए एसडीके संस्करण के लाभ अधिक मॉड्यूलरिटी हैं, जिसमें आपको जो चाहिए वह शामिल है, छोटे पैकेज का आकार जैसा कि नई लैम्ब्डा छवि पर सीधे भेजा जाता है, टाइपस्क्रिप्ट समर्थन और कुछ एसडीके व्यवहार को अनुकूलित करने के लिए एक कस्टम मिडलवेयर स्टैक (जिसे मैंने अभी तक उपयोग नहीं किया है)।
प्रवासन बहुत कठिन नहीं है; आप इस दस्तावेज़ का अनुसरण कर सकते हैं. हालाँकि, मुझे कुछ ऐसे विवरणों का सामना करना पड़ा जो पहले स्पष्ट नहीं थे जिससे आपको गूगल करने/संकेत देने में कुछ समय की बचत होगी।
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 के पक्ष में बहिष्कृत के रूप में चिह्नित किया गया है। लेकिन लैम्ब्डा रनटाइम में, 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 तालिका से कुछ स्ट्रीम संसाधित करते थे और अनमर्शल फ़ंक्शन का उपयोग करते थे, v2:
const AWS = require('aws-sdk'); const {unmarshall} = AWS.DynamoDB.Converter;
v3:
const { unmarshall } = require('@aws-sdk/util-dynamodb');
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));