我試圖從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