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
gefragt vor einem Jahr752 Aufrufe
1 Antwort
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
EXPERTE
beantwortet vor einem Jahr

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen