#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. Большое вам спасибо, я добавил его в свои закладки. Это действительно полезно!