#node.js #api #express #amazon-dynamodb #aws-sdk
#node.js #API #экспресс #amazon-dynamodb #aws-sdk
Вопрос:
Я работаю над API на основе nodejs с использованием aws dynamodb. API работал нормально, но сегодня я получаю эту ошибку:
{
"success": false,
"message": {
"message": "Missing region in config",
"code": "ConfigError",
"time": "2020-08-17T19:17:17.462Z"
}
}
Ниже приведен мой пользовательский маршрут api:
const AWS = require('aws-sdk');
const config = require('config');
const { v4: uuidv4 } = require('uuid');
// Set the region
AWS.config.update({ region: 'us-east-2' });
router.post(`/api/user`, (req, res) => {
console.log('User Add Services Called');
try {
//Constants
AWS.config.update(config.aws_remote_config);
var params = {
TableName: config.aws_table_name,
Item: {
PK: `${uuidv4()}`,
SK: `User`,
name: 'Test'
}
};
//Calling DynamoDB to add the item to the table
docClient.put(params, function (err) {
if (err) {
res.send({
success: false,
message: err
});
} else {
res.send({
success: true,
message: 'User Added'
});
}
});
} catch (error) {
return res.status(500).json({
status: 'error',
message: 'An error occurred trying to process your request'
});
}
});
Некоторое время эти ошибки тоже отображаются:
- подключитесь к ENETUNREACH 169.254.169.254:80
- Отсутствуют учетные данные в конфигурации, при использовании AWS_CONFIG_FILE установите AWS_SDK_LOAD_CONFIG=1
Кто-нибудь может сказать, почему это происходит, API работал нормально, и я также пытался восстановить ключи доступа, но возникает та же проблема
Комментарии:
1. уже есть решение, ребята?
2. такая же проблема после использования api в течение нескольких дней.
Ответ №1:
Я думаю, вы перенастраиваете AWS.config, который перезаписывает ваше первоначальное обновление конфигурации, содержащее инициализацию региона. Попробуйте это:
const AWS = require('aws-sdk');
const config = require('config');
const { v4: uuidv4 } = require('uuid');
// Set the region
AWS.config.update({ region: 'us-east-2', ...config.aws_remote_config });
router.post(`/api/user`, (req, res) => {
console.log('User Add Services Called');
try {
var params = {
TableName: config.aws_table_name,
Item: {
PK: `${uuidv4()}`,
SK: `User`,
name: 'Test'
}
};
//Calling DynamoDB to add the item to the table
docClient.put(params, function (err) {
if (err) {
res.send({
success: false,
message: err
});
} else {
res.send({
success: true,
message: 'User Added'
});
}
});
} catch (error) {
return res.status(500).json({
status: 'error',
message: 'An error occurred trying to process your request'
});
}
});
Редактировать
Тогда это означает, что ваши учетные данные отсутствуют, просто сделайте это:
// ... Other code
// Set the region
AWS.config.update({
...config.aws_remote_config,
region: 'us-east-2',
credentials: {
accessKeyId: 'your-access-key',
secretAccessKey: 'your-secret-key'
} });
// ... Other code
Комментарии:
1. если я это сделаю, то придет такой ответ: Отсутствуют учетные данные в конфигурации, если используется AWS_CONFIG_FILE, установите AWS_SDK_LOAD_CONFIG=1
2. Я уже передаю все это в массив. Если проблема заключалась в последовательности, то она не должна была работать с самого начала. Мой вопрос остается тем же, почему он перестал работать? раньше все работало нормально