将字符串追加到AWS Lambda中的文本文件Nodejs

卡斯珀

方案:文本文件snapshot-ids.txt位于S3存储桶中。我正在尝试创建一个每天运行(Cron)的Lambda函数,该函数将使用AWS CLI拍摄卷的快照,然后将该快照ID保存到S3中的文本文件中。下次创建另一个快照时,新的snapshotId将保存到S3上的同一文本文件中。文本文件是快照ID的占位符,当达到阈值时,它将删除顶部的快照ID,并在末尾添加新的快照ID(FIFO管道)。

对于不使用AWS lambda的人,我的问题是将文本追加到变量并返回带有新行的新变量的最快方法是什么。

对于了解Lambda的人,这是我拥有的AWS Lambda的基本代码,我使用fs.appendFile,但如何使用从s3.getObject()获得的文件并将其最终传递给s3.putObject()?

编辑:这是我的进步:

console.log('Loading function');

var aws = require('aws-sdk');
var s3 = new aws.S3({ apiVersion: '2006-03-01' });
var fs = require('fs');

exports.handler = function(event, context) {
    //console.log('Received event:', JSON.stringify(event, null, 2));

    // Get the object from the event and show its content type
    var bucket = event.Records[0].s3.bucket.name;
    var key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
    var params = {
        Bucket: bucket,
        Key: key
    };
    s3.getObject(params, function(err, data) {
        if (err) {
            console.log(err);
            var message = "Error getting object " + key + " from bucket " + bucket +
                ". Make sure they exist and your bucket is in the same region as this function.";
            console.log(message);
            context.fail(message);
        } else {
            // fs.appendFile('snapshot-ids.txt', 'snap-001', function (err) {
            //     if (err) throw err;
            //     console.log('The "data to append" was appended to file!');
            // });
            console.log(params_new);
            console.log('CONTENT TYPE getObject:', data.ContentType);
            // context.succeed(data.Body.toString('ascii'));
        }
    });
    var params_new = {
        Bucket: bucket,
        Key: key,
        Body: 'snap-002'
    };
    s3.putObject(params_new, function(err, data) {
                console.log('put here');
                if (err) {
                    console.log(err);
                    var message = "Error getting object " + key + " from bucket " + bucket +
                        ". Make sure they exist and your bucket is in the same region as this function.";
                    console.log(message);
                    context.fail(message);
                } else {
                    console.log('CONTENT TYPE putObject:', data.ContentType);
                    context.succeed(data.ContentType);
                }
    });
};
瑞安

到目前为止,我在您的代码中注意到了几件事...

  1. s3.putObject直到s3.getObject完成并且您拥有s3中的文件,您才能调用

  2. 因为你得到了你是不是与文件系统处理datas3.getObject

考虑到这些事情,我修改了您的代码(我没有尝试过,但是应该可以使您朝正确的方向前进):

console.log('Loading function');

var aws = require('aws-sdk');
var s3 = new aws.S3({ apiVersion: '2006-03-01' });

exports.handler = function(event, context) {
    //console.log('Received event:', JSON.stringify(event, null, 2));

    // Get the object from the event and show its content type
    var bucket = event.Records[0].s3.bucket.name;
    var key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
    var params = {
        Bucket: bucket,
        Key: key
    };
    s3.getObject(params, function(err, data) {
        if (err) {
            console.log(err);
            var message = "Error getting object " + key + " from bucket " + bucket +
                ". Make sure they exist and your bucket is in the same region as this function.";
            console.log(message);
            context.fail(message);
        } else {
            console.log(params_new);
            console.log('CONTENT TYPE getObject:', data.ContentType);

            // convert body(file contents) to a string so we can append
            var body = data.Body.toString('utf-8');
            // append data
            body += 'snap-001\n';

            var params_new = {
                Bucket: bucket,
                Key: key,
                Body: body
            };
            //NOTE this call is now nested in the s3.getObject call so it doesn't happen until the response comes back
            s3.putObject(params_new, function(err, data) {
                        console.log('put here');
                        if (err) {
                            console.log(err);
                            var message = "Error getting object " + key + " from bucket " + bucket +
                                ". Make sure they exist and your bucket is in the same region as this function.";
                            console.log(message);
                            context.fail(message);
                        } else {
                            console.log('CONTENT TYPE putObject:', data.ContentType);
                            context.succeed(data.ContentType);
                        }
            });

        }
    });

};

还有一点要记住的是,如果您同时运行多个Lambda,则它们很可能会互相on脚。听起来您每天只计划安排一次,所以这没什么大不了的,但是值得注意。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将字符串追加到IronScheme中的现有文本文件

来自分类Dev

将文本文件中的url添加到字符串数组(Android)

来自分类Dev

如何将多个文本文件中的字符串添加到数组

来自分类Dev

通过将多个文本文件附加到summary_ [date] .log,在字符串和副本行中搜索多个文本文件

来自分类Dev

读取文本文件中的字符串

来自分类Dev

从文本文件中检索匹配的字符串

来自分类Dev

在文本文件中找不到字符串

来自分类Dev

在文本文件中搜索字符串

来自分类Dev

在文本文件中搜索多行字符串

来自分类Dev

文本文件中的Perl字符串比较

来自分类Dev

从文本文件中删除字符串

来自分类Dev

在文本文件中搜索字符串?

来自分类Dev

从文本文件中获取特定字符串

来自分类Dev

在文本文件中搜索字符串的位置

来自分类Dev

将文本文件中包含的字符串添加到每个第 4 行的末尾

来自分类Dev

如何将字符串添加到我的文本文件中的第 13 行

来自分类Dev

将字符串追加到内容可变的文件中

来自分类Dev

遍历文本文件并查找要附加到与层次结构相关的文本文件中的子字符串的字符串

来自分类Dev

将具有多个空格的字符串添加到文本文件

来自分类Dev

C ++将字符串添加到现有文本文件

来自分类Dev

将字符串添加到文本文件的开头,无需换行

来自分类Dev

从终端将字符串添加到文本文件

来自分类Dev

python在文本文件中搜索字符串并将值添加到变量

来自分类Dev

将文本文件批量拆分为出现字符串的文本文件

来自分类Dev

将字符串写入文本文件

来自分类Dev

将文本文件读入字符串

来自分类Dev

将文本文件读入字符串数组

来自分类Dev

将字符串连接/附加到文本文件中的数字列表

来自分类Dev

nodejs将json中的对象转换为字符串行,并将这些行存储在文本文件中

Related 相关文章

  1. 1

    将字符串追加到IronScheme中的现有文本文件

  2. 2

    将文本文件中的url添加到字符串数组(Android)

  3. 3

    如何将多个文本文件中的字符串添加到数组

  4. 4

    通过将多个文本文件附加到summary_ [date] .log,在字符串和副本行中搜索多个文本文件

  5. 5

    读取文本文件中的字符串

  6. 6

    从文本文件中检索匹配的字符串

  7. 7

    在文本文件中找不到字符串

  8. 8

    在文本文件中搜索字符串

  9. 9

    在文本文件中搜索多行字符串

  10. 10

    文本文件中的Perl字符串比较

  11. 11

    从文本文件中删除字符串

  12. 12

    在文本文件中搜索字符串?

  13. 13

    从文本文件中获取特定字符串

  14. 14

    在文本文件中搜索字符串的位置

  15. 15

    将文本文件中包含的字符串添加到每个第 4 行的末尾

  16. 16

    如何将字符串添加到我的文本文件中的第 13 行

  17. 17

    将字符串追加到内容可变的文件中

  18. 18

    遍历文本文件并查找要附加到与层次结构相关的文本文件中的子字符串的字符串

  19. 19

    将具有多个空格的字符串添加到文本文件

  20. 20

    C ++将字符串添加到现有文本文件

  21. 21

    将字符串添加到文本文件的开头,无需换行

  22. 22

    从终端将字符串添加到文本文件

  23. 23

    python在文本文件中搜索字符串并将值添加到变量

  24. 24

    将文本文件批量拆分为出现字符串的文本文件

  25. 25

    将字符串写入文本文件

  26. 26

    将文本文件读入字符串

  27. 27

    将文本文件读入字符串数组

  28. 28

    将字符串连接/附加到文本文件中的数字列表

  29. 29

    nodejs将json中的对象转换为字符串行,并将这些行存储在文本文件中

热门标签

归档