web-dev-qa-db-fra.com

Autorisations de fichiers et de dossiers téléchargés du kit SDK node.js AWS S3

Je télécharge un fichier vers S3 à l'aide du package aws-sdk:

fs.readFile(sourceFile, function (err, data) {
    if (err) { throw err; }

    s3.client.putObject({
        Bucket: bucketName,
        Key: 'Folder/image.jpg',
        Body: data
    }, function (res) {
            console.log('Successfully uploaded file.');
        })

});

J'ai besoin de rendre le fichier téléchargé téléchargeable via cloudfront, si je suppose, j'ai besoin de définir des autorisations sur le fichier: Tout le monde est ouvert/téléchargé, le dossier 2 doit être rendu public (via le menu Rendre public). Donc 2 questions:

1) Comment définir\modifier les autorisations sur le fichier\dossier téléchargé?

2) Comment rendre le dossier public à l'aide d'AWS SDK pour node.js.

47
WHITECOLOR

Je l'ai trouvée http://docs.aws.Amazon.com/AmazonS3/latest/dev/ACLOverview.html#CannedACL

besoin d'ajouter une option dans putObject:

ACL:'public-read'
79
WHITECOLOR

Voici un extrait de code de travail qui télécharge un fichier local (test-file.gif) dans le compartiment S3 et imprime une URL que tout le monde peut télécharger.

const fs = require('fs');
const AWS = require('aws-sdk');
AWS.config.update({ region: 'us-west-1' });

// Fill in your bucket name and local file name:
const BUCKET_NAME = 'test-bucket-name-goes-here'
const FILE_NAME_LOCAL = './test-file.gif'
const FILE_NAME_S3 = 'this-will-be-the-file-name-on-s3.gif'
const FILE_PERMISSION = 'public-read'

// Create S3 service object
s3 = new AWS.S3({ apiVersion: '2006-03-01' });

// Get file stream
const fileStream = fs.createReadStream(FILE_NAME_LOCAL);

// Call S3 to retrieve upload file to specified bucket
const uploadParams = {
    Bucket: BUCKET_NAME,
    Key: FILE_NAME_S3,
    Body: fileStream,
    ACL: FILE_PERMISSION
};

s3.upload(uploadParams, function (err, data) {
    if (err) {
        console.log("Error", err);
    } if (data) {
        console.log("Upload Success", data.Location);
    }
});
6
user1032613