web-dev-qa-db-fra.com

AWS Informations d'identification manquantes lorsque j'essaie d'envoyer quelque chose à mon S3 Bucket (Node.js)

Il je!

J'ai ce problème depuis hier et j'ai du mal à trouver une solution.

J'essaie d'envoyer quelque chose à mon panier S3, mais ce message apparaît dans ma console lorsque j'essaie

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

Et voici mon code:

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

    s3.putObject(params, function(err) {
        if(err) {
            console.log(err);
        }
        else {
            console.log("Succes");
        }
});

Les informations d'identification sont correctes. Est-ce que quelqu'un sait ce qui peut être? J'ai cherché mais je ne trouve nulle part la solution.


Mes références (faux):

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

MODIFIER:

Pour aide, tout le code:

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

Nouvelle erreur:

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 }
37
user3998237

Essayez de coder en dur vos paramètres et voyez si vous obtenez à nouveau l'erreur:

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

Bonne ressource ici

50
xShirase

J'ai eu le même problème jusqu'à ce que j'ai inversé les deux lignes:

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

pour ça:

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

J'avais la même erreur. Mais j'ai trouvé le problème. J'utilisais un mauvais nom de variable d'environnement. De NodeJS à S3, je dois utiliser les noms de variables suivants:

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

Une fois que j’ai corrigé les noms de variables, cela a bien fonctionné ... salutations, Dipankar

5
Dipankar Biswas

Essayez de changer l'utilisateur dans mon fichier de configuration aws d'un utilisateur spécifique à [par défaut]. 

$nano .aws/credentials

[default]
aws_access_key_id = xyz
aws_secret_access_key = xyz

Si vous ne possédez pas ce fichier, créez-le et obtenez vos clés ou générez-en un nouveau à partir de clés d'utilisateur aws iam.

5
timbo7io

J'ai essayé l'option ci-dessus et même cela n'a pas fonctionné. J'ai donc créé un nouvel objet config et le code ci-dessous a fonctionné.

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

Cela a résolu mon problème.

  1. Utiliser l'exemple de code de la console Cognito et l'ajouter au document.

  2. Activé Accès non authentifié sur le pool d'identités.

Le plus important 

  1. Correction de la stratégie de relation de confiance dans le rôle unauth afin que le service Cognito puisse assumer ce rôle.

  2. Ne codez pas les informations d'identification dans le fichier.

0
SUDARSHAN

J'ai eu un problème similaire en essayant de charger le fichier de configuration à partir de n'importe quel emplacement autre que le répertoire racine. 

J'ai pu charger le fichier JSON de manière native dans le noeud, puis transmettre l'objet qui a été analysé à AWS.config.update()

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