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客戶端,您可以閱讀您感興趣的特定變量。 希望這有助於您。

相關問題