x-ray error when calling secrets manager

0

I have a very simple node js application. in the code I want to use x-ray and catch the calls I do with the AWS sdk. In my case the secrets manager.

I always get this error "Error: Failed to get the current sub/segment from the context." when I run it localy.

const AWS = require('aws-sdk');
const AWSXRay = require('aws-xray-sdk');
AWS.config.update({ region: 'eu-west-1' });

// Initialize the AWS X-Ray SDK
AWSXRay.captureAWS(require('aws-sdk'));

// Create a Secrets Manager client with X-Ray instrumentation
const secretsManager = AWSXRay.captureAWSClient(new AWS.SecretsManager());

// Retrieve the secret value with X-Ray instrumentation
AWSXRay.captureAsyncFunc('getSecretValue', function(subsegment) {

  // Define the parameters for the secret
  const params = {
    SecretId: 'thesecretId'
  };

  return secretsManager.getSecretValue(params).promise().then(data => {
    if (AWSXRay.getSegment()) {
      AWSXRay.getSegment().addMetadata('SecretId', params.SecretId);
    }
    return JSON.parse(data.SecretString).password;
  });
}).then(password => {
  console.log('got password:');
}).catch(err => {
  console.error(err);
});


Joachim
已提问 1 年前752 查看次数
1 回答
0

Hi Joachim,

First could you try to use either captureAWS or csptureAWSClient https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-nodejs-awssdkclients.html

As mentions:

Do not use both captureAWS and captureAWSClient together. This will lead to duplicate subsegments.

Then check if you installed the middleware in the app: https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-nodejs-middleware.html#xray-sdk-nodejs-middleware-express

Let me know

profile picture
专家
已回答 1 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则