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
posta un anno fa719 visualizzazioni
1 Risposta
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
ESPERTO
con risposta un anno fa

Accesso non effettuato. Accedi per postare una risposta.

Una buona risposta soddisfa chiaramente la domanda, fornisce un feedback costruttivo e incoraggia la crescita professionale del richiedente.

Linee guida per rispondere alle domande