【发布时间】:2021-11-14 15:16:04
【问题描述】:
上下文:我正在尝试使用 paramiko Python 库从 AWS Lambda 函数(使用 Python 3.7 编写)内通过 SSH 连接到 EC2 实例。有问题的 EC2 实例存在于 VPC 中。我也知道这个 EC2 的公共 IP。我已经为 Paramiko 创建了一个 lambda 图层包,并且能够使用 import paramiko 语句而没有错误,所以我知道该库工作正常。
尝试的解决方案: 我已经使用this tutorial 尝试通过 SSH 连接到上面提到的 EC2。到目前为止我的代码如下(一些信息已被随机化以保护隐私):
import json
import boto3
import paramiko
def lambda_handler(event, context):
s3_client = boto3.client("s3") # Boto3 is the AWS SDK for Python and allows us to manage these 2 services (among other things)
s3_client.download_file("censored-bucket-name", "keyname.pem", "/tmp/keyname.pem")
ssh_key = paramiko.RSAKey.from_private_key_file("/tmp/keyname.pem") # obj type = PKey
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # setting policy to connect to unknown host and trust it
ssh_client.connect(hostname="3.81.62.55", username="ubuntu", pkey=ssh_key) # connecting to ec2 server
return {
statusCode': 200,
body': json.dumps('Commands have been successfully executed ')
}
问题:
我的问题是,在 Lambda 中运行此代码时(使用“{}”的空测试事件),代码只是超时(2 分钟)并且根本不会引发任何错误。
即使我的 Lambda 函数属于同一个 VPC、使用相同的子网并应用了必要的安全组,我似乎也无法连接到 EC2。
任何想法我做错了什么?
【问题讨论】:
标签: python amazon-ec2 ssh aws-lambda paramiko