如何发现正在运行的 AWS lambda 的本地 IP 地址或 ENI?

问题描述 投票:0回答:3

我正在尝试发现当前正在执行的 AWS Lambda 的 VPC IP 地址或 AWS ENI,以便我可以使用该 IP 地址来过滤 VPC 日志以查找匹配的记录。 Lambda 在 VPC 中运行,没有公共 IP 地址。

我尝试了这里建议的各种技术:

使用Python的stdlib查找本地IP地址

但这些对我不起作用,因为我认为它们是从容器的角度而不是 VPC 的角度显示容器的 IP 地址。

python amazon-web-services aws-lambda ip-address discovery
3个回答
0
投票

部分答案是,ENI 是在创建 lambda 时设置的,而不是每次运行时设置的。似乎(但我不确定)运行具有相同安全组的相同 VPC 的 lambda 共享相同的 ENI。因此,严格来说,我不需要在运行时从 lambda 本身的代码中发现 IP 地址。相反,我可以检查网络接口控制台来发现 lambda ENI 并将其用于我的过滤目的(当然,前提是没有太多来自同一网络接口上运行的其他 lambda 的流量)。


0
投票

我们的解决方案是在 VPC 内生成一个私有 API,并通过模拟响应告诉您调用的私有 IP 地址。然后根据该私有 IP 查询 EC2DescribeNetworkInterfaces api。

由于这非常耗时,因此我们仅在冷启动时运行它,而不是在每次 lambda 运行时运行。


0
投票

您可以使用 AWS CLI 获取 Lambda 使用的 ENI 的私有 IP。

aws ec2 describe-network-interfaces --filters Name=interface-type,Values=lambda --query "NetworkInterfaces[].{NetworkInterfaceId: NetworkInterfaceId, PrivateIpAddresses: PrivateIpAddresses}"
© www.soinside.com 2019 - 2024. All rights reserved.