【问题标题】:How to create and read .txt file with fs.writeFile to AWS Lambda如何使用 fs.writeFile 创建和读取 .txt 文件到 AWS Lambda
【发布时间】:2017-05-16 22:01:18
【问题描述】:

​你好,

有人知道我如何将 .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);
        }
    },
}

【问题讨论】:

    标签: aws-lambda alexa-skills-kit


    【解决方案1】:

    问题是,您的 /tmp 文件夹仅保证在您的 lambda 函数执行期间是持久的。所以;如果 SetOrderIntent 在一个 lambda 调用中被调用并执行,RetrieveOrderIntent 在另一个 lambda 调用中被调用和执行,则这些是两个单独的 lambda 执行,并且不能保证 /tmp 仍然可用。

    为确保在调用 read 函数时您在一次 lambda 执行中保存的数据仍然存在,您应该将数据存储在 S3 左右。

    【讨论】:

    • 你会推荐我使用 S3 还是使用 session.Attributes?
    • 我认为这取决于您数据的大小,但对我来说它看起来只是一个字符串,对吧?比你应该尝试 session.Attributes。此外,您正在RetrieveOrderIntent 中发出同步。这意味着在 readFile 在回调中实际完成之前触发您的发出。你应该在 readFile 回调中移动this.emit。还有callback 是从哪里来的?
    猜你喜欢
    • 2017-12-21
    • 2020-03-03
    • 2019-08-18
    • 2017-05-11
    • 1970-01-01
    • 2014-09-21
    • 2010-12-21
    • 2017-10-22
    • 1970-01-01
    相关资源
    最近更新 更多