2017-09-25 4 views
0

J'ai créé un compartiment sur aws et utilisateur IAM, puis mis en place des autorisations d'accès pour l'utilisateur.Comment accéder au compartiment sur AWS S3 en utilisant IAM - avec Node.js (aws-sdk)?

Maintenant, je suis coincé parce que je ne sais pas comment utiliser aws-sdk pour télécharger une image. Je ne trouve aucun exemple (tous les exemples que j'ai trouvés utilisent la clé et la clé secrète, pas IAM).

S'il vous plaît me donner l'exemple de travail ou fixer mon code qui est apparemment ne fonctionne pas:

var awsFileName = entityType.awsFolder + entityId + '/' + fileName; //get filename like /folder1/folder2/filename 

aws.config.update({ 
    region: 'ca-central-1', 
    accessKeyId: awsKey // like 'ADXZJMPSVCU3KOAXGJJL' 
    }); 
var s3 = new aws.S3(); 

var s3Bucket = new aws.S3({ params: {Bucket: 'testbucket'} }); 
var awsFileData = {Key: awsFileName, Body: data}; 
s3Bucket.putObject(data, function(err, data){ 
    if (!err) 
    { 
     callbackOk(fileName, awsFileName); 
     console.log('succesfully uploaded the image!'); 
    } else { 
     console.log('Error uploading data: ', data); 
     callbackFail(); 
    } 
}); 

Ce que j'est maintenant erreur « manquant nécessaire « clé » clé params » et 45 000 (!!!) Erreur avec le même texte "Erreur: Clé inattendue 'N' trouvée dans params (...)" où N est le nombre d'erreurs.

Répondre

3

Cela ne semble pas être lié à IAM du tout. Vous ne passez pas le paramètre Key à l'opération de mise S3. Je crois que vous devriez passer fileData à putObject, au lieu de data. Comme ça:

var awsFileData = {Key: awsFileName, Body: data}; 
s3Bucket.putObject(awsFileData, function(err, data){ 
+0

Merci, laissez-moi essayer. – mimic

+0

OMG ça a marché, je suis tellement stupide :( – mimic