paint-brush
AWS SDK v2 को v3 (जावास्क्रिप्ट) में माइग्रेट करने पर नोट्स - आपकी सहायता के लिए एक त्वरित मार्गदर्शिकाद्वारा@lregalado
7,548 रीडिंग
7,548 रीडिंग

AWS SDK v2 को v3 (जावास्क्रिप्ट) में माइग्रेट करने पर नोट्स - आपकी सहायता के लिए एक त्वरित मार्गदर्शिका

द्वारा Lorenzo Regalado3m2023/07/22
Read on Terminal Reader

बहुत लंबा; पढ़ने के लिए

जावास्क्रिप्ट (v2) के लिए AWS SDK को इस वर्ष 2023 में रखरखाव मोड में डाल दिया जाएगा। मैं कुछ सुझाव साझा करता हूं जो AWS SDK (v3) पर माइग्रेट करने में आपका समय बचाएंगे।
featured image - AWS SDK v2 को v3 (जावास्क्रिप्ट) में माइग्रेट करने पर नोट्स - आपकी सहायता के लिए एक त्वरित मार्गदर्शिका
Lorenzo Regalado HackerNoon profile picture
0-item

जावास्क्रिप्ट (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 अभी तक शामिल नहीं है, इसलिए यदि आप इसका उपयोग करना चाहते हैं, तो आपको इसे अपने प्रोजेक्ट उत्पादन निर्भरता में जोड़ना होगा।

DynamoDB

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

एस3

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