我试图从Node.js托管的应用程序中从Amazon S3存储桶下载文件。使用Node.js从EC2实例下载AWS S3文件
var folderpath= process.env.HOME || process.env.USERPROFILE // tried using os.homedir() also
var filename = 'ABC.jpg';
var filepath = 'ABC';
AWS.config.update({
accessKeyId: "XXX",
secretAccessKey: "XXX",
region: 'ap-southeast-1'
});
var DOWNLOAD_DIR = path.join(folderpath, 'Downloads/');
var s3 = new AWS.S3();
var s3Params = {Bucket: filepath,Key: filename, };
var file = require('fs').createWriteStream(DOWNLOAD_DIR+ filename);
s3.getObject(s3Params).createReadStream().pipe(file);
此代码工作正常在本地主机,但因为实例FOLDERPATH回报不从实例工作“的/ home/EC2用户”,而不是用户的机器中下载文件夹的路径,即类似“C:\用户\名称”。
请问我该如何下载文件到用户机器?如何从ec2实例获取用户主目录的路径?
谢谢。
作为一个方面说明:将secretAccessKey保存在代码中是一个坏主意。您应该创建IAM角色并将其分配给EC2实例。 –
好的,我会的。谢谢@Sergey Kovalev –
你是什么意思的“不工作”?你有错误吗? 'folderpath'是Linux机器上的一个正常目录路径(它是'ec2-user'的主目录)。你确定'/ home/ec2-user/Downloads /'目录是否存在,并且用户有写入权限? – GilZ