2017-01-08 1 views
1

J'utilise S3FS lib (dans l'application node.js) pour télécharger des fichiers dans mon répertoire AWS S3. (Documentation faisant référence https://www.npmjs.com/package/s3fs) et stackoverflow answer hereImpossible d'attribuer des autorisations ACL au fichier téléchargé lors de l'utilisation du noeud S3FS js lib

s3fs objet d'initialisation
s3fsImpl = new s3fs(bucketPath, { accessKeyId: xxxxx, secretAccessKey: xxxxx, ACL: 'public-read' })

méthode

writeFile: s3fsImpl.writeFile(fileName, stream)
fichier est téléchargé avec succès et j'obtiens "ETag" en réponse. Cependant, le fichier téléchargé n'est pas accessible au public.

Comment puis-je donner les autorisations ACL appropriées pour le rendre accessible au public?

Répondre

0

En fait, j'ai pu obtenir ce travail avec l'approche suivante dans le noeud

Etape 1: Installer et inclure "aws-sdk" pour accéder aux ressources aws (je l'ai utilisé pour S3)

var AWS = require('aws-sdk') 
var s3 = new AWS.S3() 

Étape 2 :

s3.putObject({ 
      Bucket: AWS_BUCKET_NAME, // bucket name on which file to be uploaded 
      Key: uploadKey, // file name on s3 
      ContentType: file.type, // type of file 
      Body: new Buffer(fileData, 'binary'), // base-64 file stream 
      ACL: 'public-read' // public read access 
     }, function (err, resp) { 
      if (err) { // if there is any issue 
       console.error('failed file upload to S3:: ', err) 
       callback(err, null) 
      } 
      console.log('response from S3: ', resp) 
      callback(null, 'Success') 
     } 
    ) 

ACL: 'public-lecture' assignera l'accès du public à lire vos médias/fichier sur S3

0

Vous pouvez fournir l'ACL comme la troisième option dans la méthode writeFile comme

s3fsImpl.writeFile(fileName, stream,{ ACL: 'public-read'})