保存和检索Lambda函数的数据的最佳方法是什么?

时间:2019-09-15 03:07:56

标签: amazon-web-services aws-lambda

我需要保存少量数据(〜2kb字符串)并从lambda函数检索。最好的方法是什么?

我一天只需要写几次这些值,但是每次调用Lambda函数时我都需要检索它们,因此只需几次写就可以进行很多次读取。

我知道我的解决方案是DynamoDB,S3或ElasticCache。我还看过SSM参数存储,但不清楚是否可以写入值,或者这是否是仅用于读取值的服务器。

我希望有人可以在Lambda函数中为最佳和最具成本效益的方法提供建议。

2 个答案:

答案 0 :(得分:1)

有几个选项供您选择,以下是每个选项的用法。

DynamoDb或RDS: 这些是数据库驱动的解决方案,并带有自己的服务和组件,需要使用它们才能创建它们。这些操作的成本将取决于数据量,输入或输出的数据量等,并且如果您只想偶尔存储几个值(虽然您可以在DynamoDB中做到这一点,那可能会很合适),但这样做可能并不合适。便宜的)。

S3 S3是存储对象/文件的好地方。它便宜,易于使用,并且可能是您的最佳选择。您可以从Lambda函数创建/写入/更新/删除S3存储桶中的文件。因此,在您的功能完成之后,您的数据将保留在此文件中,以备下次使用。您可以将数据存储为文件,在文件中进行配置,等等。

您已经提到 SSM Paramater 商店。通常用于存储您的应用程序,服务器或功能的配置值。这可能是数据库连接字符串或解决方案与之交互的其他服务的名称或“ ARN”(资源的AWS网址)。它通常不用作数据与应用程序一起使用的“数据存储”。 ElasticCache也不是,顾名思义,这是一种缓存技术,用于使Web应用程序等的数据访问速度更快。在SSM中存储应用程序的配置数据的好处是,它们可供所有解决方案使用(例如,共享的数据库连接字符串),并且可以在静态时进行加密以提高安全性。

如果您仅在AWS中进行交谈,那么最好的选择是使用S3存储对象/文件和数据。如果您碰巧以JSON或CSV格式存储数据,您甚至可以使用诸如S3 SELECT之类的AWS服务从S3中的文件直接查询该信息,也可以使用Athena根据数据创建表/架构在S3中进行查询,就像查询SQL数据库一样!

因此,S3可能是最好的和最具成本效益的。您的另一个选择可能是让Lambda函数写入AWS环境中EC2实例的本地文件系统(例如EBS)。由于EC2实例只是虚拟机,因此它们具有文件系统,您可以像在普通计算机上一样将数据和文件存储在文件夹中。您的Lambda函数可以将数据写入此文件系统以进行存储或检索。根据您要对数据进行 的操作,您还可以将其提交到SQS之类的服务,该服务是一个消息队列,然后让该消息队列将数据处理到另一个服务中。

AWS领域中有很多选择,但是为了使事情变得简单,并根据您提供的非常模糊的解释,Amazon S3似乎是最好的方法。简单,易于编写代码,并且成本低廉。

答案 1 :(得分:1)

坦率地说,由于它只是2KB的字符串,很少更改,因此我建议使用Systems Manager参数存储。

有一些放置和获取参数的函数。它只是一个键值存储,可以使用IAM限制哪些角色/用户可以访问数据。

您可以在每次执行Lambda函数时检索值,或者,如果您不担心获取最新值,则可以在首次执行时将其缓存在Lambda函数中。