Вчера у меня работал проект, тянущий вчера изображение профиля для каждого пользователя из S3, но сегодня, когда я пошел, чтобы загрузить страницу с изображением профиля, он отобразил страницу без изображения.Я проверил логи, и похоже, что они жалуются на то, что мои учетные данные AWS не работают.Я пытался убедиться, что они были правы, они были, я пытался обновить их до вновь сгенерированных, и это тоже не удалось.
Вот код, который взаимодействует с AWS, получая изображение профиля.Когда я запускаю узел, он не жалуется на то, что файл конфигурации не загружается.Я попытался вывести значения файла конфигурации на консоль (я использовал поддельные значения для секрета и ключа доступа), и это сработало, поэтому я знаю, что оно вытягивает правильные значения.
Мой код
// Packages
var aws = require("aws-sdk");
var s3 = new aws.S3();
// Config
var config = require('../config/config');
aws.config.update({
secretAccessKey: config.aws_s3.secretAccessKey,
accessKeyId: config.aws_s3.accessKeyId,
region: config.aws_s3.region,
sslEnabled: true
});
exports.profileImage = (req, res, next) => {
var profileImageDB = req.user.avatar;
var urlParams = {Bucket: config.aws_s3.logoBucket, Key: profileImageDB};
s3.getSignedUrl('getObject', urlParams, function(err, url){
if (err) console.log(err);
res.locals.url = url;
next();
});
};
Сообщение об ошибке
{ CredentialsError: Missing credentials in config
at ClientRequest.<anonymous> (/home/ubuntu/workspace/sailhr/node_modules/aws-sdk/lib/http/node.js:83:34)
at ClientRequest.g (events.js:292:16)
at emitNone (events.js:86:13)
at ClientRequest.emit (events.js:185:7)
at Socket.emitTimeout (_http_client.js:630:10)
at Socket.g (events.js:292:16)
at emitNone (events.js:86:13)
at Socket.emit (events.js:185:7)
at Socket._onTimeout (net.js:338:8)
at ontimeout (timers.js:386:14)
at tryOnTimeout (timers.js:250:5)
at Timer.listOnTimeout (timers.js:214:5)
message: 'Missing credentials in config',
code: 'CredentialsError',
time: 2018-09-24T22:28:44.241Z,
retryable: true,
originalError:
{ message: 'Could not load credentials from any providers',
code: 'CredentialsError',
time: 2018-09-24T22:28:44.241Z,
retryable: true,
originalError:
{ message: 'Connection timed out after 1000ms',
code: 'TimeoutError',
time: 2018-09-24T22:28:
Я даже пытался жестко кодировать значения в файл с моей функцией.Это тоже не удается.Я могу загрузить изображение на S3, используя учетные данные AWS, которые я использую для загрузки, так что известно, что ключи работают с 5 минут назад.
Кто-нибудь знает, что может происходить?Это кажется странной ошибкой, когда я не трогал код, который его использует, и учетные данные имеют полный доступ к S3 (только для устранения неполадок).