4

我正在研究一个AWS无服务器应用程序,我是AWS新手,因此请纠正此问题中的任何误解。我们有大约30个lambda函数在RDS中托管的SQL数据库上执行基本的CRUD操作。我们使用EntityFramework Core来创建数据库。这意味着,为了使用数据库,lambda函数每个都需要访问EF连接字符串。我不想把连接字符串留在内存中(它包含一个纯文本密码),所以我把它放在一个加密的环境变量中。如何轻松地将环境变量添加到多个Lambda函数?

我可以解决如何做到这一点的唯一方法是通过lambda管理控制台GUI为每个lambda函数分别添加一个加密的环境变量。这很乏味,但它工作。我现在已经改变了一下解决方案,并且我们需要一组不同的lambda函数,这些需要环境变量也添加到它们中,我不想再次手动执行。

我的问题:

有一个简单的方法来添加加密的环境变量(或类似的东西),可以用我所有的lambda函数可以访问?有没有一种方法可以批量添加它们?我可以使用的更高级变量?

我试图在亚马逊文档中找到信息(here for example),但收效甚微。

回答

2

LAMBDA只关心让环境变量,它需要,这是不负责用于集中管理环境变量。

你需要做的是在你的部署过程中处理你的环境变量。

您目前如何部署30个lambda函数?

如果您使用CodeBuild,它可以访问AWS EC2 Parameter Store,您可以在其中集中存储和管理敏感环境变量。其他CI/CD工具也有其自己的集中管理环境变量的方法。

更新

可以使用AWS EC2 Parameter Store编程。这意味着您可以在启动过程中从Lambda函数内部检索存储的环境变量,因此您无需在部署时执行此操作。

如果在您的用例中可能,那么在部署时执行此操作仍然更好。

+0

我正在使用Visual Studio的AWS工具包,它有一个内置的部署向导。我将调查CodeBuild,谢谢! – SBaker

0

我会建议在AWS控制台上添加ConnectionString,并且不要在配置文件中使用生产连接字符串以避免这些问题。登录AWS控制台,转至lambda函数并将连接字符串添加为环境变量。 PS。如果你会与语法纠缠。如果你的JSON配置文件看起来是这样的:

{ 
    "Settings": 
    { 
     "ConnectionString":"", 
     "SomethingElse" 
    } 
} 

使用此语法来配置连接字符串:

Settings__ConnectionString

+0

感谢您的回复。我已经这样做了。我的问题:说我有400个lambda函数。我需要添加400个环境变量,每个函数一个吗?这需要很长时间。有更容易的方法吗? – SBaker

+0

@SBaker我认为没有办法集中设置。我也在寻找这个解决方案 – OlegI

2

我不会称之为解决方案,而是解决您的问题。 您可以配置您的环境变量并将其存储到S3存储桶中。 在您的每个lambda中使用S3客户端,您可以阅读您感兴趣的特定变量。 希望这有助于您。

相关问题