2017-05-16 28 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