AWS - Lambda 无法访问 EMR 的 Livy 端点

AWS - Lambda cannot access Livy endpoint for EMR

供参考,livy 是用于从集群中提取数据的休息端点。在同一个帐户中,我的 lambda 函数在尝试使用 EMR 访问 livy 端点时总是超时。

端点: http://ip-xxxx-xx-xxx-xx.ec2.internal:8998/

错误:

     "errorMessage": "HTTPConnectionPool(host='ip-xxx-xx-xxxx-xx.ec2.internal', port=`8998`):
Max retries exceeded with url: /batches (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fa6613150d0>: Failed to establish a new connection: [Errno 110] Connection timed out'))",

我在 lambda 中添加了 AmazonEMRFullAccessPolicy_v2,但它没有帮助。我错过了什么?这是用于内部访问的正确端点吗?

首先,您的 http 端点是 <ip>.ec2.internal。所以我假设它在某个 VPC 中(不是 public)。所以你的 lambda 必须在同一个 VPC 中。

您正在尝试使用 TCP 连接访问 HTTP 端点,因此您的 lambda 安全组必须列入 EMR 主节点安全组的白名单。

最后,您不需要 AmazonEMRFullAccessPolicy_v2 因为您没有访问 AWS API。