es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error de credenciales: no se pudieron cargar las credenciales de ChainableTemporaryCredentials en AWS-SDK v2 para Javascript.

Estoy tratando de configurar credenciales temporales en el AWS-SDK v2 para Javascript:

const aws = require('aws-sdk')

aws.config = new aws.Config({
  credentials: new aws.ChainableTemporaryCredentials({
    params: {
      RoleArn: roleArn, // Definido anteriormente
      RoleSessionName: sessionName, // Definido anteriormente
      DurationSeconds: 15 * 60
    },
    masterCredentials: new aws.Credentials({
      accessKeyId: accessKeyId, // Definido anteriormente
      secretAccessKey: awsSecretAccessKey // Definido anteriormente
    })
  }),
  region: 'us-east-1',
  signatureVersion: 'v4'
})

aws.config.getCredentials(function (err) {
  if (err) console.log(err.stack)
  else console.log('Clave de acceso:', aws.config.credentials.accessKeyId)
})

Sin embargo, sigo recibiendo el siguiente error, que ocurre al llamar a getCredentials:
CredentialsError: No se pudieron cargar las credenciales de ChainableTemporaryCredentials

Tenga en cuenta que funciona bien si configuro el parámetro credentials con las credenciales maestras en lugar de las credenciales temporales, como se muestra a continuación:

aws.config = new aws.Config({
  credentials: new aws.Credentials({
    accessKeyId: accessKeyId, // Definido anteriormente
    secretAccessKey: awsSecretAccessKey // Definido anteriormente
  }),
  region: 'us-east-1',
  signatureVersion: 'v4'
})

¿Alguien sabe qué está causando este problema? Aquí está la documentación a la que estaba haciendo referencia:
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Credentials.html
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ChainableTemporaryCredentials.html

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema puede estar relacionado con la forma en que se pasan las credenciales temporales en el parámetro credentials. En lugar de pasar las credenciales temporales directamente, puede ser necesario pasar una instancia de la clase ChainableTemporaryCredentials. Esta clase permite encadenar varios proveedores de credenciales, lo cual puede ser útil en ciertos escenarios.

    Para hacer que funcione, intenta cambiar el código de la siguiente manera:

    const aws = require('aws-sdk')
    
    aws.config = new aws.Config({
      credentials: new aws.ChainableTemporaryCredentials({
        params: {
          RoleArn: roleArn, // Definido anteriormente
          RoleSessionName: sessionName, // Definido anteriormente
          DurationSeconds: 15 * 60
        },
        masterCredentials: new aws.Credentials({
          accessKeyId: accessKeyId, // Definido anteriormente
          secretAccessKey: awsSecretAccessKey // Definido anteriormente
        })
      }),
      region: 'us-east-1',
      signatureVersion: 'v4'
    })
    
    aws.config.getCredentials(function (err) {
      if (err) console.log(err.stack)
      else console.log('Clave de acceso:', aws.config.credentials.accessKeyId)
    })
    

    Esto debería crear una instancia de ChainableTemporaryCredentials, que luego se puede pasar al parámetro credentials. Después de llamar a getCredentials, las credenciales temporales deberían cargarse y estar disponibles para su uso por parte del SDK.

    Para obtener más información sobre ChainableTemporaryCredentials y otros proveedores de credenciales, consulta la documentación de AWS SDK para JavaScript.

Comments are closed.