2017-06-18 8 views
1

Dans mon projet nodejs, j'utilise aws-sdk pour télécharger toutes les images de mon seau s3, mais j'ai eu cette erreur - NoSuchKey: La clé spécifiée n'existe pas. Mais les touches sont correctes et je peux télécharger des images avec ces touches.aws-sdk: NoSuchKey: La clé spécifiée n'existe pas?

Mon code est:

var AWS = require('aws-sdk'); 
    s3 = new AWS.S3(); 
    var params = { 
     Bucket: config.get("aws.s3.bucket"), 
     Key: config.get("aws.credentials.secretAccessKey") 
    }; 
    s3.getObject(params, function (err, data) { 
     console.log("data"); 
     if (err) console.log(err, err.stack); // an error occurred 
     else console.log(data); 
    }); 
} 

Quelqu'un peut-il s'il vous plaît me dire où je fais mal?

Répondre

0

Vous aurez peut-être besoin de sudo pour lire les clés.

+0

Merci @ mikep, Comment est-ce que je peux faire ceci? Pouvez-vous être spécifique? –

+0

Dans un shell Linux, faites sudo . Vous serez invité à entrer un mot de passe. – mikep

+0

mais je le fais dans mon projet puis comment cela va fonctionner? –

2

Il y a des problèmes liés à l'utilisation aws-sdk et il devrait être comme exemple suivant:

var aws = require('aws-sdk'); 
aws.config.update({ 
    accessKeyId: {{AWS_ACCESS_KEY}}, 
    secretAccessKey: {{AWS_SECRET_KEY}} 
}); 
var s3 = new aws.S3(); 
var s3Params = { 
    Bucket: {{bucket name}}, 
    Key: {{path to dedicated S3 Object (folder name + file/object 
    name)}} 
}; 
s3.getObject(s3Params, function (err, data) { 
    //Continue handling the returned results. 
}); 

remplacent les cordes à l'intérieur {{}} avec des données correctes et il devrait bien fonctionner.

+0

Il semblerait que l'incompréhension de l'OP est ce qu'est une ["Clé" dans S3] (https://docs.aws.amazon.com/AmazonS3/latest/ dev/UsingObjects.html). Votre exemple de code est correct. Bien qu'idéalement, on devrait utiliser [roles] (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) par opposition aux clés/secrets d'accès codés en dur. [Configuration de l'environnement local] (https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html). Bien que tout ce qui est au-delà de la question de l'OP :) – cameck

+0

Il est au-delà de la portée de cette question, mais vous avez raison et ce que vous avez expliqué que je faisais dans mes codes :) –

+0

Correct, je l'ai remarqué. J'ai ajouté le lien pour le bénéfice de OP, pas le vôtre :) – cameck