VPC 中 lambda 的 IP 地址耗盡
我目前是一個小組的一員,該小組正在處理部署 300 多個執行 Node.js 的 AWS Lambda 函式來代替更傳統的 REST API 的影響。我最近實現了一個在私有子網上的 VPC 中的 EC2 實例上執行的應用程序。因此,將與此應用程序進行大量通信的 Lambda 本身也被放置在同一 VPC 中的私有子網中。EC2 實例在 6 個私有/24 個子網中執行(我們區域的每個可用區一個)。lambda 有 6 /20 個私有子網,它們被配置為在其中執行。據我了解,每次呼叫 lambda 都會在其中一個子網中分配一個 IP 地址,這在我們用完之前給了我大約 24,564 個 IP 地址。
我的問題是:
1)Lambda是否只在實際執行期間佔用IP地址,然後釋放IP地址?更簡潔地說,我們是否會很快用完 IP 地址,因為我們預計呼叫會很快增加?我知道我可以將 VPC 中的更多地址空間分配給 lambda,但這會是我們一直在追求的問題嗎?
- 我如何在 AWS 控制台或其他地方查看 lambdas 佔用了多少 IP 地址?
注意:我是一名初級 DevOps 工程師,如果有不清楚的地方請原諒我,並隨時糾正我
這個答案現在已經過時了。有關最新資訊,請參閱此部落格文章或其他 AWS 文件。
此頁面說明在 VPC 中使用 Lambda 時需要多少 ENI - 這是每個子網
如果您的 Lambda 函式訪問 VPC,您必須確保您的 VPC 有足夠的 ENI 容量來支持您的 Lambda 函式的規模要求。您可以使用以下公式來大致確定 ENI 要求。
預計峰值並發執行次數 *(記憶體以 GB / 3GB 為單位)
假設您有 10 個 lambda 並發執行,分配了 1GB,即 10 x 1 / 3 = 3.33 或 4 ENI / private IPs per subnet。如果您有 100 個並發執行,分配了 2GB,則每個子網有 80 個 ENI/私有 IP 。我認為沒有任何關於 ENI 的創建和刪除頻率的描述,並且實施細節可能會隨著時間而改變。
您可以在控制台或ENI API中查看 ENI 。
根據這個問題,Lambda 必須有權創建和刪除 ENI 。