2017-05-20 93 views
0

我有一個目標組,其中有一個應用程序負載平衡器後面有兩個EC2實例。我正在嘗試構建一個lambda服務來監視負載均衡器偵聽器外部的EC2實例健康狀態。 如果VPC未啓用,此lambda按預期工作。一旦我啓用了VPC,然後下面的代碼將失敗:當啓用VPC時,AWS Lambda服務無法訪問目標組

client = boto3.client("elbv2", region_name=default_region_name) 
tg_res = client.describe_target_groups(Names=[self.name]) 

API describe_target_groups會卡在那裏,直到超時。

此VPC具有Internet訪問和安全組入站/出站臨時打開所有IP。

任何命中將高度讚賞。

==========更新================== 從拉姆達日誌,超時發生在:

Starting new HTTPS connection (1): elasticloadbalancing.us-west-2.amazonaws.com 

我檢查網絡設置,我確信這個VPC具有NAT配置。

+0

請參閱以下鏈接:https://aws.amazon.com/blogs/aws/new-access-resources-in-a-vpc-from-your-lambda-functions/ –

+0

請您提供更多關於配置 - 您是否將Lambda函數鏈接到Public或Private子網?如果是私有的,是否有NAT網關或NAT實例可以訪問Internet?負載平衡器上的安全組的配置是什麼? –

回答

0

您可能需要編輯您的aws lambda函數以添加VPC支持。 你可以閱讀更多關於here

0

這個問題是通過分配另外兩個內部訪問唯一的子網來解決的。 1)兩個EC2實例在ALB後面。 EC2實例在子網中,假設:west-2a-public,west-2b-public。這兩個子網是面向互聯網的,可以分配公共IP。 2)我將lambda服務分配到相同的子網:west-2a-public和west-2b-public,但它不起作用。 3)然後,我將lambda服務分配到另外兩個子網:west-2a-private和west-2b-private。這兩個子網確實有NAT,但沒有公共IP分配。

我想這個問題的路由器映射,但我需要時間來找出確切的根本原因。到目前爲止,它的工作。