AWSJavaScriptSDK(V2)で書いているlambdaをV3にアップデート機会があったのでメモ。
AWSJavaScriptSDK(V2)でX-Rayを使う時は公式通り、こんな感じで書いてました。
var AWS = require('aws-sdk');
var AWSXRay = require('aws-xray-sdk');
var ddb = AWSXRay.captureAWSClient(new AWS.DynamoDB());
Add annotations and metadata to segments with the X-Ray SDK for Node.js
しかし、AWS SDK for JavaScript v3ではだいぶ書き方が変わりました。今まではaws-sdk'
全体を使う必要があったのに対してV3では個別に使うことができる。などなど。
const {DynamoDB, CreateTableCommand} = require('@aws-sdk/client-dynamodb');
const dynamodb = new DynamoDB({region: 'us-west-2'});
var tableParams = {
Table : TABLE_NAME
};
async function run() => {
try{
const data = await dynamodb.send(new CreateTableCommand(tableParams));
console.log("Success", data);
}
catch (err) {
console.log("Error", err);
}
};
run();
What’s the AWS SDK for JavaScript?
V3でX-Ray
を使う場合は、こうします。
const AWSXRay = require('aws-xray-sdk');
import { S3, PutObjectCommand } from '@aws-sdk/client-s3';
const s3 = AWSXRay.captureAWSv3Client(new S3({}));
await s3.send(new PutObjectCommand({
Bucket: bucketName,
Key: keyName,
Body: 'Hello!',
}));
captureAWSv3Client
とあるように使えるのはclient
です。Command
には使えません。