带有适用于 NodeJS 的 AWS SDK v3 的 AWS XRay
AWS XRay with AWS SDK v3 for NodeJS
有什么方法可以为 AWS NodeJS SDK v3 使用 XRay 检测吗?在 SDK v2 中,AWSXray 能够捕获任何客户端并对其进行检测以跟踪 XRay。
我一直在使用以下代码段
对 v3 尝试同样的事情
const {DynamoDBClient, ScanCommand} = require("@aws-sdk/client-dynamodb");
const AWSXRay = require("aws-xray-sdk");
// if uncommented, this throws an exception
// AWSXRay.captureAWSClient(DynamoDBClient);
const client = new DynamoDBClient({region: process.env.AWS_REGION});
// if uncommented, this throws an exception
// AWSXRay.captureAWSClient(client);
const scan = new ScanCommand({
TableName: 'xxx',
});
await client.send(scan) //?
但两条注释行都抛出 service.customizeRequests is not a function
。这似乎 AWS SDK s3 不向后兼容原始 AWSXRay 库。
我发现 SDK v3 包含 XRay 客户端,但这只是一个可以将跨度和跟踪发送到 AWS 的客户端,而不是检测代理。
将 XRay 检测与适用于 NodeJS 的 AWS SDK v3 结合使用的推荐模式是什么?
您需要使用v3
兼容的x-ray-sdk
捕获功能captureAWSv3Client
这是工作片段:
const {DynamoDBClient, ScanCommand} = require("@aws-sdk/client-dynamodb");
const AWSXRay = require("aws-xray-sdk-core");
const dynamoClient = AWSXRay.captureAWSv3Client(
new DynamoDBClient({})
)
const scan = new ScanCommand({
TableName: 'xxx',
});
const response = await dynamoClient.send(scan)
拥有写入X-Ray的权限也很重要,例如:
Policies:
- AWSXrayWriteOnlyAccess
有什么方法可以为 AWS NodeJS SDK v3 使用 XRay 检测吗?在 SDK v2 中,AWSXray 能够捕获任何客户端并对其进行检测以跟踪 XRay。 我一直在使用以下代码段
对 v3 尝试同样的事情const {DynamoDBClient, ScanCommand} = require("@aws-sdk/client-dynamodb");
const AWSXRay = require("aws-xray-sdk");
// if uncommented, this throws an exception
// AWSXRay.captureAWSClient(DynamoDBClient);
const client = new DynamoDBClient({region: process.env.AWS_REGION});
// if uncommented, this throws an exception
// AWSXRay.captureAWSClient(client);
const scan = new ScanCommand({
TableName: 'xxx',
});
await client.send(scan) //?
但两条注释行都抛出 service.customizeRequests is not a function
。这似乎 AWS SDK s3 不向后兼容原始 AWSXRay 库。
我发现 SDK v3 包含 XRay 客户端,但这只是一个可以将跨度和跟踪发送到 AWS 的客户端,而不是检测代理。
将 XRay 检测与适用于 NodeJS 的 AWS SDK v3 结合使用的推荐模式是什么?
您需要使用v3
兼容的x-ray-sdk
捕获功能captureAWSv3Client
这是工作片段:
const {DynamoDBClient, ScanCommand} = require("@aws-sdk/client-dynamodb");
const AWSXRay = require("aws-xray-sdk-core");
const dynamoClient = AWSXRay.captureAWSv3Client(
new DynamoDBClient({})
)
const scan = new ScanCommand({
TableName: 'xxx',
});
const response = await dynamoClient.send(scan)
拥有写入X-Ray的权限也很重要,例如:
Policies:
- AWSXrayWriteOnlyAccess