私はaws-sdkパッケージを使用してS3にファイルをアップロードしています:
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.');
})
});
アップロードしたファイルをクラウドフロント経由でダウンロードできるようにする必要があります。正しいと思う場合は、ファイルにアクセス許可を設定する必要があります。 2つの質問:
1)アップロードされたファイル\フォルダのアクセス権を設定/変更する方法
2)node.js用のAWS SDKを使用してフォルダをパブリックにする方法。
それを見つけました http://docs.aws.Amazon.com/AmazonS3/latest/dev/ACLOverview.html#CannedACL
putObjectにオプションを追加する必要があります。
ACL:'public-read'
以下は、ローカルファイル(test-file.gif)をS3バケットにアップロードし、ダウンロードする全員のURLを出力する作業コードスニペットです。
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);
}
});