JavaScript (v2) এর জন্য AWS SDK এই বছর (2023) রক্ষণাবেক্ষণ মোডে রাখা হবে। v3 কিছু সময়ের জন্য উপলব্ধ ছিল, এবং এটি Node18 এর জন্য নতুন ল্যাম্বডা রানটাইমে অন্তর্ভুক্ত সংস্করণ, যা বর্তমান LTS নোড সংস্করণও।
সুতরাং, আপনি যদি আপনার ল্যাম্বডাসকে Node18 Lambda রানটাইমে আপডেট করতে চান, তাহলে আপনাকে আপনার বর্তমান ল্যাম্বডা ফাংশনে SDK v2 যোগ করতে হবে বা Node16-এ থাকতে হবে (আপনি নিজের রানটাইম রোল করতে পারেন, কিন্তু এটি অন্য বিষয়)।
নতুন SDK সংস্করণের সুবিধাগুলি হল আরও মডুলারিটি, যার মধ্যে আপনার যা প্রয়োজন, ছোট প্যাকেজের আকার যেমন সরাসরি নতুন ল্যাম্বডা ইমেজে পাঠানো হয়, টাইপস্ক্রিপ্ট সমর্থন এবং কিছু SDK আচরণ কাস্টমাইজ করার জন্য একটি কাস্টম মিডলওয়্যার স্ট্যাক (যা আমি এখনও ব্যবহার করতে পারিনি) .
স্থানান্তর করা খুব কঠিন নয়; আপনি এই ডক অনুসরণ করতে পারেন. যাইহোক, আমি কিছু বিবরণের সম্মুখীন হয়েছি যা প্রথমে স্পষ্ট ছিল না যা আপনাকে কিছু গুগলিং/প্রম্পটিং সময় বাঁচাবে।
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 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));
আপনি যদি একটি DynamoDB টেবিল থেকে কিছু স্ট্রীম প্রক্রিয়া করতে এবং unmarshall ফাংশন ব্যবহার করেন, 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));