AWS SDK V3 SecretsManager: Значение null в «secretId»

#node.js #amazon-web-services #aws-lambda #aws-sdk #aws-sdk-nodejs

Вопрос:

Ниже приведен код, который я запускаю с помощью лямбда-функции с полным разрешением SecretsManagerReadWrite на ее роль:

 const { SecretsManagerClient, GetSecretValueCommand } = require('@aws-sdk/client-secrets-manager');

exports.handler = async () => {
  const secretsManagerClient = new SecretsManagerClient({
    region: 'eu-west-2'
  });
  
  const params = {
    secretId: 'Realitex/APIAccount'
  }
  const command = new GetSecretValueCommand(params);
  
  try {
    const data = await secretsManagerClient.send(command);
    console.log(data);
  } catch (error) {
    console.log(error, error.stack);
  } finally {
    console.log("Done getting");
  }
}
 

Вы можете ясно видеть, что я передаю secretId в качестве параметра команде, отправленной через клиент secrets manager, однако возникает эта ошибка:

 2021-03-17T15:20:39.963Z    0bd9bc3a-47ce-4c57-b583-0df9d9d70b34    INFO    ValidationException: 1 validation error detected: Value null at 'secretId' failed to satisfy constraint: Member must not be null
    at deserializeAws_json1_1GetSecretValueCommandError (/var/task/node_modules/@aws-sdk/client-secrets-manager/dist/cjs/protocols/Aws_json1_1.js:770:41)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at async /var/task/node_modules/@aws-sdk/middleware-serde/dist/cjs/deserializerMiddleware.js:6:20
    at async /var/task/node_modules/@aws-sdk/middleware-signing/dist/cjs/middleware.js:12:24
    at async StandardRetryStrategy.retry (/var/task/node_modules/@aws-sdk/middleware-retry/dist/cjs/defaultStrategy.js:56:46)
    at async /var/task/node_modules/@aws-sdk/middleware-logger/dist/cjs/loggerMiddleware.js:6:22
    at async Runtime.exports.handler (/var/task/index.js:14:18) {
  __type: 'ValidationException',
  '$fault': 'client',
  '$metadata': {
    httpStatusCode: 400,
    requestId: '7b22cb52-0345-4c49-bd41-33aa3a1be707',
    extendedRequestId: undefined,
    cfId: undefined,
    attempts: 1,
    totalRetryDelay: 0
  }
}
 

Я не знаю, где еще он может ожидать члена «secretId», поскольку я пытался передать его в качестве параметра конфигурации при инициализации SecretsManager, и документы для API V3 также не предлагают ничего другого.

Любая помощь будет очень признательна!

Ответ №1:

Я решил проблему (типично, что это происходит через несколько минут после публикации)

В ошибке указано, что ожидается член с ключом «Секретный», однако его необходимо передать как «Секретный» — обратите внимание на первый заглавный символ

После изменения параметра, переданного конструктору команды, на последний ключ, теперь он работает…

Ответ №2:

Для дальнейшего использования — Примеры кода AWS SDK V3 SecretsManager можно найти здесь:

https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascriptv3/example_code/secrets

Комментарии:

1. Большое вам спасибо, я добавил его в свои закладки. Это действительно полезно!