2017-05-16 170 views
1

你好,如何創建和讀取fs.writeFile .txt文件到AWS LAMBDA

是否有人知道我可以寫一個.txt到AWS LAMBDA?我正在使用Node.js,Alexa Skills Kit和Lambda。

我的代碼:

var fs = require('fs'); 


const handlers = { 
    'SetOrderIntent': function() { 
     if (this.event.request.intent) { 
      var test = this.event.request.intent.slots.Items.value; 
      fs.writeFile('/tmp/log.txt', test, function (err) { 
       if (err) throw err; 
      }); 
      this.emit(':ask', 'This is your item: ' + test, "Test"); 
     } 
    }, 
    'RetrieveOrderIntent': function() { 
     if (this.event.request.intent) { 
      fs.readFile('/tmp/log.txt', function (err, content) { 
       if (err) return callback(err) 
       callback(null, content) 
      }) 
      this.emit(':ask', content); 
     } 
    }, 
} 

回答

2

的事情是,你/tmp文件夾只保證是你的lambda函數的執行過程中持續。所以;如果在另一個lambda調用中調用並執行SetOrderIntent,並且在另一個lambda調用中調用RetrieveOrderIntent,則這些是兩個單獨的lambda執行,並且不保證/tmp仍然可用。

爲了確保在一個lambda執行中保存的數據在讀取函數被調用時仍然存在,您應該將數據存儲在S3左右。

+0

你會推薦我使用S3還是使用session.Attributes? – Mae

+0

我認爲這取決於你的數據的大小,但對我來說,它看起來像它只有一個字符串的權利?比你應該嘗試session.Attributes。 另外,您在'RetrieveOrderIntent'中發出同步。這意味着在readFile實際在回調中完成之前,您的emit會被觸發。你應該在readFile回調中移動this.emit。 ''callback'從哪裏來? – driedel

+0

@Mae是否有效? – driedel