【发布时间】:2020-06-22 01:18:12
【问题描述】:
我正在尝试通过 lambda 函数对 AWS 账户中的所有 ec2 实例进行 SSH 连接。
c.connect(hostname = each_in.private_ip_address, username = 'pcs_user', pkey = k)
但是我遇到了这样的错误。我已将 AWSLambdaVPCAccessExecutionRole 用于 IAM 角色。
Response:
{
"errorMessage": "[Errno 110] Connection timed out",
"errorType": "TimeoutError",
"stackTrace": [
" File \"/var/task/lambda_function.py\", line 30, in lambda_handler\n c.connect( hostname = each_in.private_ip_address, username = 'pcs_us', pkey = k )\n",
" File \"/opt/python/paramiko/client.py\", line 349, in connect\n retry_on_signal(lambda: sock.connect(addr))\n",
" File \"/opt/python/paramiko/util.py\", line 283, in retry_on_signal\n return function()\n",
" File \"/opt/python/paramiko/client.py\", line 349, in <lambda>\n retry_on_signal(lambda: sock.connect(addr))\n"
]
}
【问题讨论】:
-
2 个问题,Lambda 是否在 VPC 中,您是否已将 Lambda IP 范围列入您的安全组中的白名单?
-
@Chris Williams 因为我需要访问 AWS 账户中的所有 ec2 实例,所以我没有为 lambda 函数指定 VPC。我刚刚将 AWSLambdaVPCAccessExecutionRole 添加到 IAM 角色。
-
该角色仅授予 LAmbda 函数管理其 ENI 的权限,但要做到这一点,它需要在 VPC 中才能运行 :)
-
由于我需要访问 AWS 账户中的所有 EC2 实例,有什么办法可以同时选择所有 VPC。
-
建议为 Lambda 创建一个 VPC 并附加一个中转网关以允许 Lambda VPC 与所有 VPC 对话。否则,您将需要让每个实例都是公共的,并将经常更改的 IP 范围列入白名单。答案描述了如何添加到 VPC。
标签: amazon-web-services amazon-ec2 ssh aws-lambda