AWS Falta credenciales cuando bash enviar algo a mi cubo S3 (Node.js)

Hei!

Tengo este problema desde ayer, y tengo problemas para encontrar una solución.

Estoy intentando enviar algunas cosas a mi grupo de S3, pero este mensaje aparece en mi consola cuando lo bash:

{ [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' } } } 

Y este es mi código:

 var s3 = new AWS.S3(); AWS.config.loadFromPath('./AwsConfig.json'); s3.putObject(params, function(err) { if(err) { console.log(err); } else { console.log("Succes"); } }); 

Las credenciales son correctas. ¿Alguien sabe lo que puede ser? He buscado pero no encuentro en ningún lado la solución.


Mis credenciales (falsas):

 { "accessKeyId": "BLALBLALBLALLBLALB", "secretAccessKey": "BLABLALBLALBLALBLLALBLALLBLALB", "region": "sa-east-1", "apiVersions": { "s3": "2006-03-01", "ses": "2010-12-01" } } 

EDITAR:

Para ayuda, todo el código:

 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"); } }); 

Nuevo error:

 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 } 

Intente codificar sus parámetros y vea si vuelve a aparecer el error:

 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. }); 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"); } }); 

Buen recurso aqui

Tuve el mismo problema hasta que revirtí las dos líneas:

 var s3 = new AWS.S3(); AWS.config.loadFromPath('./AwsConfig.json'); 

a esto:

 AWS.config.loadFromPath('./AwsConfig.json'); var s3 = new AWS.S3(); 

Estaba teniendo el mismo error. Pero encontré el problema. Estaba usando un nombre de variable de entorno incorrecto. Desde NodeJS a S3, necesito usar los siguientes nombres de variables:

 process.env.AWS_ACCESS_KEY_ID = 'XXXXXXXXXXXXXXXXXXX'; process.env.AWS_SECRET_ACCESS_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXX'; process.env.AWS_REGION = 'us-east-1'; 

Una vez que corregí los nombres de las variables, simplemente funcionó bien. Saludos, Dipankar

Intente cambiar el usuario en mi archivo de configuración aws de un usuario específico a [predeterminado].

 $nano .aws/credentials [default] aws_access_key_id = xyz aws_secret_access_key = xyz 

Si no tiene este archivo, créelo y obtenga sus claves o genere una nueva a partir de las claves de usuario de aws iam.

Probé la opción anterior e incluso eso no funcionó, así que creé un nuevo objeto de configuración y el siguiente código funcionó.

  AWS.config = new AWS.Config(); AWS.config.accessKeyId = "AccessKey"; AWS.config.secretAccessKey = "SecretAccessKey"; 

Tuve un problema similar al intentar cargar el archivo de configuración desde cualquier lugar que no sea el directorio raíz.

Pude cargar el archivo json de forma nativa en el nodo, luego simplemente pase el objeto que se analizó a AWS.config.update()

 import AWS from 'aws-sdk' import config from '../aws.json' AWS.config.update(config);