it-swarm.com.de

AWS Fehlende Anmeldeinformationen, wenn ich versuche, etwas an meinen S3-Bucket zu senden (Node.js)

Hei!

Ich habe dieses Problem seit gestern und habe Probleme, eine Lösung zu finden.

Ich versuche, etwas an meinen S3-Bucket zu senden, aber diese Meldung erscheint in meiner Konsole, wenn ich es versuche:

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

Und das ist mein 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");
        }
});

Die Anmeldeinformationen sind korrekt. Weiß jemand was kann sein? Ich habe gesucht, finde aber nirgends die Lösung.


Meine Nachweise (Fake):

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

BEARBEITEN:

Für die Hilfe, den ganzen 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");
    }
});

Neuer Fehler:

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

Versuchen Sie, Ihre Parameter hart zu codieren, und prüfen Sie, ob der Fehler erneut angezeigt wird:

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

Gute Ressource hier

50
xShirase

Ich hatte das gleiche Problem, bis ich die beiden Zeilen umkehrte:

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

zu diesem:

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

Ich hatte den gleichen Fehler. Aber ich habe das Problem gefunden. Ich habe einen falschen Umgebungsvariablennamen verwendet. Von NodeJS bis S3 muss ich die folgenden Variablennamen verwenden:

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

Nachdem ich die Variablennamen korrigiert hatte, lief es einfach einwandfrei . Regards, Dipankar

5
Dipankar Biswas

Versuchen Sie, den Benutzer in meiner aws-Konfigurationsdatei von einem bestimmten Benutzer in [Standard] zu ändern. 

$nano .aws/credentials

[default]
aws_access_key_id = xyz
aws_secret_access_key = xyz

Wenn Sie diese Datei nicht haben, erstellen Sie sie und holen Sie sich Ihre Schlüssel oder generieren Sie einen neuen Schlüssel aus den aws iam-Benutzerschlüsseln.

5
timbo7io

Ich habe die obige Option ausprobiert und auch das hat nicht funktioniert, also habe ich ein neues Konfigurationsobjekt erstellt und der folgende Code funktioniert

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

Dies hat mein Problem gelöst.

  1. Verwendete den Beispielcode aus der Cognito Console und fügte ihn dem Dokument hinzu.

  2. Nicht authentifizierter Zugriff auf den Identitätspool wurde aktiviert.

Am wichtigsten 

  1. Die Vertrauensstellungsrichtlinie in der nicht autorisierten Rolle wurde korrigiert, sodass der Cognito-Dienst die Rolle übernehmen konnte.

  2. Geben Sie keinen Berechtigungsnachweis in der Datei ein.

0
SUDARSHAN

Beim Versuch, die Konfigurationsdatei von einem anderen Ort als dem Stammverzeichnis aus zu laden, hatte ich ein ähnliches Problem. 

Ich konnte die Json-Datei nativ in den Knoten laden und dann das geparste Objekt an AWS.config.update() übergeben.

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