背景:我正試圖使用paramiko Python庫從AWS Lambda函式(用Python 3.7撰寫)中SSH進入一個EC2實體。有關的EC2實體存在于一個VPC中。我也知道這個EC2的公共IP。我已經為Paramiko創建了一個lambda層包,并且能夠使用import paramiko陳述句,沒有任何錯誤,所以我知道該庫作業正常。
嘗試的解決方案: 我利用這個教程來嘗試SSH進入上述的EC2。到目前為止,我的代碼如下(為了保護隱私,一些資訊被隨機化了):
import json
import boto3
import paramiko
def lambda_handler(event, context)。
s3_client = boto3.client("s3") # Boto3是用于Python的AWS SDK,允許我們管理這兩個服務(以及其他事項)。
s3_client.download_file("censored-bucket-name"/span>, "keyname.pem"/span>, "/tmp/keyname.pem"/span>)
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() ) # 設定策略以連接到未知主機并信任它。
ssh_client.connect(hostname="3.81.62.55", username="ubuntu", pkey=ssh_key) # 連接到ec2服務器。
return {
statusCode': 200,
body': json.dumps('Commands have been successfully executed ')
}
問題:
我的問題是,在Lambda中運行這段代碼時(使用"{}"的空測驗事件),代碼只是超時(2分鐘),完全沒有拋出錯誤。
我似乎無法連接到EC2,盡管我的Lambda函式是同一VPC的一部分,使用相同的子網,并應用了必要的安全組。
有什么想法,我做錯了什么嗎?
uj5u.com熱心網友回復:
3.81.62.55是一個公共IP。你必須使用你的實體的private IP或由aws為實體提供的默認EC2 dns url。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/321113.html
標籤:
