shou.com
JP / EN

X-RayをAWSJavaScriptSDK(V3)に適用する方法

Sat Sep 18, 2021
Sat Sep 18, 2021

AWSJavaScriptSDK(V2)で書いているlambdaをV3にアップデート機会があったのでメモ。

AWSJavaScriptSDK(V2)でX-Rayを使う時は公式通り、こんな感じで書いてました。

1
2
3
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では個別に使うことができる。などなど。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
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を使う場合は、こうします。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
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には使えません。

aws-xray-sdk-core

参考

See Also