AWS Отсутствует учетные данные, когда я пытаюсь отправить что-то в свой S3 Bucket (Node.js)
Hei!
У меня проблема со вчерашнего дня, и у меня возникли проблемы с поиском решения.
Я пытаюсь отправить что-то в свой ведро S3, но это сообщение появляется на моей консоли, когда я пытаюсь:
{ [CredentialsError: Missing credentials in config]
message: 'Missing credentials in config',
code: 'CredentialsError',
errno: 'Unknown system errno 64',
syscall: 'connect',
time: Thu Oct 09 2014 14:03:56 GMT-0300 (BRT),
originalError:
{ message: 'Could not load credentials from any providers',
code: 'CredentialsError',
errno: 'Unknown system errno 64',
syscall: 'connect',
time: Thu Oct 09 2014 14:03:56 GMT-0300 (BRT),
originalError:
{ code: 'Unknown system errno 64',
errno: 'Unknown system errno 64',
syscall: 'connect',
message: 'connect Unknown system errno 64' } } }
И это мой код:
var s3 = new AWS.S3();
AWS.config.loadFromPath('./AwsConfig.json');
s3.putObject(params, function(err) {
if(err) {
console.log(err);
}
else {
console.log("Succes");
}
});
Учетные данные верны. Кто-нибудь знает, что может быть? Я искал, но не нашел решения.
Мои учетные данные (подделка):
{
"accessKeyId": "BLALBLALBLALLBLALB",
"secretAccessKey": "BLABLALBLALBLALBLLALBLALLBLALB",
"region": "sa-east-1",
"apiVersions": {
"s3": "2006-03-01",
"ses": "2010-12-01"
}
}
EDIT:
Для справки, весь код:
var fs = require('fs');
var AWS = require('aws-sdk');
var s3 = new AWS.S3();
AWS.config.loadFromPath('./MYPATH.json'); //this is my path to the aws credentials.
var params = {
Bucket: 'testing-dev-2222',
Key: file,
Body: fs.createReadStream(file)
};
s3.putObject(params, function(err) {
if(err) {
console.log(err);
}
else {
console.log("Success");
}
});
Новое err:
Error uploading data: { [PermanentRedirect: The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.]
message: 'The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.',
code: 'PermanentRedirect',
time: Thu Oct 09 2014 14:50:02 GMT-0300 (BRT),
statusCode: 301,
retryable: false }
Ответы
Ответ 1
Попробуйте жестко запрограммировать свои параметры и посмотрите, не получите ли вы ошибку снова:
AWS.config.update({
accessKeyId: "YOURKEY",
secretAccessKey: "YOURSECRET",
"region": "sa-east-1" <- If you want send something to your bucket, you need take off this settings, because the S3 are global.
}); // for simplicity. In prod, use loadConfigFromFile, or env variables
var s3 = new AWS.S3();
var params = {
Bucket: 'makersquest',
Key: 'mykey.txt',
Body: "HelloWorld"
};
s3.putObject(params, function (err, res) {
if (perr) {
console.log("Error uploading data: ", err);
} else {
console.log("Successfully uploaded data to myBucket/myKey");
}
});
Хороший ресурс здесь
Ответ 2
У меня была такая же проблема, пока я не перевернул две строки:
var s3 = new AWS.S3();
AWS.config.loadFromPath('./AwsConfig.json');
:
AWS.config.loadFromPath('./AwsConfig.json');
var s3 = new AWS.S3();
Ответ 3
Ваша проблема в том, что вы вызываете эти две строки в неправильном порядке:
var s3 = new AWS.S3();
AWS.config.loadFromPath('./AwsConfig.json');
вам следует позвонить
var s3 = new AWS.S3();
после загрузки ваших учетных данных
Ответ 4
У меня была такая же ошибка. Но я нашел проблему. Я использовал неправильное имя переменной среды. От NodeJS до S3 мне нужно использовать следующие имена переменных:
process.env.AWS_ACCESS_KEY_ID = 'XXXXXXXXXXXXXXXXXXX';
process.env.AWS_SECRET_ACCESS_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXX';
process.env.AWS_REGION = 'us-east-1';
Как только я исправил имена переменных, он просто прошел нормально.
С уважением,
Dipankar
Ответ 5
Попробуйте изменить пользователя в моем конфигурационном файле aws от определенного пользователя до [по умолчанию].
$nano .aws/credentials
[default]
aws_access_key_id = xyz
aws_secret_access_key = xyz
Если у вас нет этого файла, создайте его и получите свои ключи или создайте новый из пользовательских ключей aws iam.
Ответ 6
Я попробовал вариант выше, и даже это не сработало, поэтому я создал новый объект конфигурации, и этот ниже код работал
AWS.config = new AWS.Config();
AWS.config.accessKeyId = "AccessKey";
AWS.config.secretAccessKey = "SecretAccessKey";
Ответ 7
У меня была аналогичная проблема при попытке загрузить файл конфигурации из любого другого места, кроме корневого каталога.
Мне удалось загрузить json файл изначально в node, а затем просто передать объект, который был разобран на AWS.config.update()
import AWS from 'aws-sdk'
import config from '../aws.json'
AWS.config.update(config);
Ответ 8
Это решило мою проблему.
-
Использовал пример кода из консоли Cognito и добавил его в документ.
-
Включен доступ без аутентификации в пуле удостоверений.
Самое важное
-
Исправлена политика доверительных отношений в роли unauth, чтобы служба Cognito могла взять на себя эту роль.
-
Не используйте жесткий код учетных данных в файле.