2017-09-05 1 views
1

J'utilise Javascript AWS SDK. Je l'inclue avec ceci: getObject du seau AWS s3 utilisant Javascript SDK: erreur "credential manquant"

Tout ce que je veux faire est de GET objets déjà stockés dans un seau s3.

Le code client a accès à une URL (de travail) pour l'objet stocké sur s3. Il ressemble à ceci:

https://s3.amazonaws.com/my-bucket-name/my-object-key

Mon application client dispose actuellement d'un groupe de ces URL. Je télécharge les fichiers avec succès en simulant des clics sur les liens de ces URL. Ce que je voudrais faire, c'est rassembler tous les fichiers dans mon script afin de les regrouper dans un fichier zip avec une structure de dossier agréable en utilisant JSzip.

Je suis en train de faire ce qui suit (ceci inclut tous s3 code lié à mon code de base):

var bucketName = 'my-bucket-name'; 
    var s3 = new AWS.S3({ 
     params: { 
      Bucket: bucketName 
     } 
    }); 

    var key = myFileUrl.split('my-bucket-name/')[1]; 
    var params = { 
     Key: key 
    }; 
    s3.getObject(params, function(err, data) { 
     if (err) console.log("error!" + err + err.stack); // an error occurred 
     else { 
     console.log("success getting file from S3:",data);   // successful response 
     } 
    }); 

Quand je lance ce, je reçois un « CredentialsError: les informations d'identification manquant dans config » erreur.

Je n'aurais pas vraiment besoin d'informations d'identification, n'est-ce pas? Le fichier est public, je peux l'obtenir en suivant le lien. J'ai regardé la documentation d'AWS pour utiliser le sdk Javascript (client), et ils ne configurent aucun objet de configuration.

Quelqu'un at-il obtenu ce travail? Qu'est-ce que je fais mal?

+0

ma balise de script a été supprimée. J'inclus le SDK dans mon fichier stl avec ce fichier: sdk.amazonaws.com/js/aws-sdk-2.100.0.min.js – Jay

Répondre

0

Le kit AWS SDK JavaScript enveloppe l'API REST S3, which requires authentication on GetObject (see the note). Si vous ne voulez pas fournir d'authentification (notez que vous pouvez créer un rôle AMI avec uniquement l'autorisation GetObject), vous pouvez simplement effectuer une requête Web normale, par exemple avec fetch ou XMLHttpRequest si vous utilisez un navigateur.

+0

huh. Pourquoi n'ai-je pas pensé à faire une requête ajax? Merci. – Jay