我正在开发一个AWS无服务器应用程序,我是AWS的新手,所以请纠正这个问题中的任何误解。我们有大约30个lambda函数在RDS中托管的SQL数据库上执行基本的CRUD操作。我们使用EntityFramework Core来创建数据库。这意味着,为了使用数据库,lambda函数每个都需要访问EF连接字符串。我不想将连接字符串留在内存中(它包含明文密码)所以我把它放在加密的环境变量中。
我能弄清楚如何做到这一点的唯一方法是通过lambda管理控制台GUI将加密的环境变量分别添加到每个lambda函数中。这很乏味但是很有效。我现在已经改变了一点解决方案,我们需要一组不同的lambda函数,这些函数也需要添加环境变量,我不想再次手动执行。
我的问题:
是否有一种简单的方法可以添加所有lambda函数都可以访问的加密环境变量(或类似的东西)?有没有方法可以批量添加它们?我可以使用更高级别的变量吗?
我试图在亚马逊文档(here for example)中查找信息,但收效甚微。
答案 0 :(得分:2)
Lambda只关心获取所需的环境变量,并且不负责集中管理环境变量。
您需要做的是在部署过程中处理环境变量。
您目前如何部署30个lambda函数?
如果您使用CodeBuild,它可以访问AWS EC2 Parameter Store,您可以在其中集中存储和管理敏感环境变量。
其他CI / CD工具也有自己的集中管理环境变量的方式。
<强>更新强>:
您可以通过编程方式使用AWS EC2 Parameter Store。这意味着您可以在启动期间从Lambda函数内部检索存储的环境变量,因此您无需在部署时执行此操作。
如果在您的用例中可以实现,那么在部署时进行此操作仍然会更好。
答案 1 :(得分:2)
我不会将此称为解决方案而是解决您的问题。 您可以配置环境变量并将其存储到S3存储桶中。 在每个lambda中使用S3客户端,您可以读取您感兴趣的特定变量。 希望这会有所帮助。
答案 2 :(得分:0)
我建议在AWS控制台添加ConnectionString,不要在配置文件中使用生产连接字符串来避免这些问题。登录AWS控制台,转到lambda函数并添加连接字符串作为环境变量。 PS。万一你会遇到语法困难。如果您的json配置文件如下所示:
{
"Settings":
{
"ConnectionString":"",
"SomethingElse"
}
}
使用此语法配置连接字符串:
Settings__ConnectionString
答案 3 :(得分:0)
我参加聚会迟到了。将您的连接字符串保存到 DynamoDB 表中并让每个 lambda 从中获取如何。我假设所有这些都使用一个连接字符串。大部分时间用于 SQL Server。