如何使用Node.js将文件直接上传到Amazon Cloud Front

我刚刚configuration了Amazon Cloud Front分配,并将其连接到现有的Amazon S3存储桶。 话虽如此,这个桶可容纳10GB到40GB的video文件,我想用CF来使上传过程更快(也是下载,但上传在这种情况下更重要)。

最后,我创build了一个简单的JS脚本来将文件推送到连接到CF的这个存储桶:

var AWS_ACCESS_KEY_ID = "111", AWS_SECRET_ACCESS_KEY = "222", S3_BUCKET = "videos.company.com", S3_KEY = "remote_filename.mkv", fs = require('fs'), AWS = require('aws-sdk'); AWS.config.update({accessKeyId: AWS_ACCESS_KEY_ID, secretAccessKey: AWS_SECRET_ACCESS_KEY}); var startDate = new Date().toUTCString(); var fileStream = fs.createReadStream(__dirname + '/test.mkv'); fileStream.on('error', function (err) { if (err) { throw err; } }); fileStream.on('open', function () { var s3 = new AWS.S3(); s3.putObject({ Bucket: S3_BUCKET, Key: S3_KEY, Body: fileStream }, function(err) { if (err) { console.log(err, err.stack); } else { console.log('Uploaded file to ' + S3_KEY + ' at ' + new Date().toUTCString()); console.log("Start time: " + startDate + ", end time: " + new Date().toUTCString()); } }).on('httpUploadProgress', function(progress) { console.log('Upload', progress.loaded, 'of' , progress.total, 'bytes' + " --> " + ((progress.loaded*100)/progress.total).toFixed(2) + "%"); }); }); 

运行脚本后,我没有注意到任何速度变化(上传有和没有CF分配)…实际上两个案件的上传时间是完全一样的。 但是,在阅读了一些论坛之后,我看到有人在谈论使用CF url进行POST请求。

我怎样才能直接从我的服务器上传文件到CF?

谢谢!