Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 错误-SSH操作员错误:连接ec2实例时气流超时_Python_Airflow_Airflow Operator - Fatal编程技术网

Python 错误-SSH操作员错误:连接ec2实例时气流超时

Python 错误-SSH操作员错误:连接ec2实例时气流超时,python,airflow,airflow-operator,Python,Airflow,Airflow Operator,尝试连接ec2实例时出现超时错误。 我可以通过ssh命令连接到机器: ssh-i keypair.pemmyuser@ec2IPaddress 我的连接文件包含以下内容: 连接Id:ssh\u自定义 连接类型:SSH 主持人:ec2IPaddress 用户名:myuser 港口:8888 额外:{“密钥文件”:“/home/ubuntu/keypair.pem”,“无主机密钥检查”:“false”,“允许主机密钥更改”:“true”,“超时”:“45”} 我的dag文件如下所示: from ai

尝试连接ec2实例时出现超时错误。 我可以通过ssh命令连接到机器:

ssh-i keypair.pemmyuser@ec2IPaddress

我的连接文件包含以下内容:

连接Id:ssh\u自定义 连接类型:SSH 主持人:ec2IPaddress 用户名:myuser 港口:8888 额外:{“密钥文件”:“/home/ubuntu/keypair.pem”,“无主机密钥检查”:“false”,“允许主机密钥更改”:“true”,“超时”:“45”}

我的dag文件如下所示:

from airflow import DAG
import datetime as dt
from airflow.operators.bash_operator import BashOperator
from airflow.contrib.hooks.ssh_hook import SSHHook
from airflow.contrib.operators.ssh_operator import SSHOperator

sshHook = SSHHook(ssh_conn_id='ssh_custom')

default_args = {
    'owner': 'arpita',
    'start_date': dt.datetime(2019, 11, 20),
    'retries': 1,
    'retry_delay': dt.timedelta(minutes=5),
    'depends_on_past': False,
    'email': ['example@abc.com'],
    'email_on_failure': True,
    'email_on_retry': True,
}

with DAG('sample',
         default_args=default_args,
         schedule_interval='30 * * * *',
         ) as dag:
     task1 = SSHOperator(task_id="task1",
                         command='echo $HOSTNAME',
                         ssh_hook=sshHook)

task1
获取错误:

ERROR - SSH operator error: timed out
Traceback (most recent call last):
  File "/home/ubuntu/airflow/.venv/lib/python3.5/site-packages/airflow/contrib/operators/ssh_operator.py", line 101, in execute
    with self.ssh_hook.get_conn() as ssh_client:
  File "/home/ubuntu/airflow/.venv/lib/python3.5/site-packages/airflow/contrib/hooks/ssh_hook.py", line 180, in get_conn
    sock=self.host_proxy)
  File "/home/ubuntu/airflow/.venv/lib/python3.5/site-packages/paramiko/client.py", line 349, in connect
    retry_on_signal(lambda: sock.connect(addr))
  File "/home/ubuntu/airflow/.venv/lib/python3.5/site-packages/paramiko/util.py", line 280, in retry_on_signal
    return function()
  File "/home/ubuntu/airflow/.venv/lib/python3.5/site-packages/paramiko/client.py", line 349, in <lambda>
    retry_on_signal(lambda: sock.connect(addr))
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/ubuntu/airflow/.venv/lib/python3.5/site-packages/airflow/models/taskinstance.py", line 926, in _run_raw_task
    result = task_copy.execute(context=context)
  File "/home/ubuntu/airflow/.venv/lib/python3.5/site-packages/airflow/contrib/operators/ssh_operator.py", line 173, in execute
    raise AirflowException("SSH operator error: {0}".format(str(e)))
airflow.exceptions.AirflowException: SSH operator error: timed out
[2019-11-26 15:23:20,254] {taskinstance.py:1080} INFO - All retries failed; marking task as FAILED
[2019-11-26 15:23:20,284] {logging_mixin.py:95} INFO - [[34m2019-11-26 15:23:20,284[0m] {[34mconfiguration.py:[0m299} WARNING[0m - section/key [[1msmtp[0m/[1msmtp_user[0m] not found in config[0m
[2019-11-26 15:23:20,284] {taskinstance.py:1086} ERROR - Failed to send email to: ['example@abc.com']
[2019-11-26 15:23:20,285] {taskinstance.py:1087} ERROR - [Errno 111] Connection refused
Traceback (most recent call last):
  File "/home/ubuntu/airflow/.venv/lib/python3.5/site-packages/airflow/contrib/operators/ssh_operator.py", line 101, in execute
    with self.ssh_hook.get_conn() as ssh_client:
  File "/home/ubuntu/airflow/.venv/lib/python3.5/site-packages/airflow/contrib/hooks/ssh_hook.py", line 180, in get_conn
    sock=self.host_proxy)
  File "/home/ubuntu/airflow/.venv/lib/python3.5/site-packages/paramiko/client.py", line 349, in connect
    retry_on_signal(lambda: sock.connect(addr))
  File "/home/ubuntu/airflow/.venv/lib/python3.5/site-packages/paramiko/util.py", line 280, in retry_on_signal
    return function()
  File "/home/ubuntu/airflow/.venv/lib/python3.5/site-packages/paramiko/client.py", line 349, in <lambda>
    retry_on_signal(lambda: sock.connect(addr))
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/ubuntu/airflow/.venv/lib/python3.5/site-packages/airflow/models/taskinstance.py", line 926, in _run_raw_task
    result = task_copy.execute(context=context)
  File "/home/ubuntu/airflow/.venv/lib/python3.5/site-packages/airflow/contrib/operators/ssh_operator.py", line 173, in execute
    raise AirflowException("SSH operator error: {0}".format(str(e)))
airflow.exceptions.AirflowException: SSH operator error: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/ubuntu/airflow/.venv/lib/python3.5/site-packages/airflow/models/taskinstance.py", line 1084, in handle_failure
    self.email_alert(error)
  File "/home/ubuntu/airflow/.venv/lib/python3.5/site-packages/airflow/models/taskinstance.py", line 1307, in email_alert
    send_email(self.task.email, subject, html_content)
  File "/home/ubuntu/airflow/.venv/lib/python3.5/site-packages/airflow/utils/email.py", line 55, in send_email
    mime_subtype=mime_subtype, mime_charset=mime_charset, **kwargs)
  File "/home/ubuntu/airflow/.venv/lib/python3.5/site-packages/airflow/utils/email.py", line 101, in send_email_smtp
    send_MIME_email(smtp_mail_from, recipients, msg, dryrun)
  File "/home/ubuntu/airflow/.venv/lib/python3.5/site-packages/airflow/utils/email.py", line 121, in send_MIME_email
    s = smtplib.SMTP_SSL(SMTP_HOST, SMTP_PORT) if SMTP_SSL else smtplib.SMTP(SMTP_HOST, SMTP_PORT)
  File "/usr/lib/python3.5/smtplib.py", line 251, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib/python3.5/smtplib.py", line 335, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/usr/lib/python3.5/smtplib.py", line 306, in _get_socket
    self.source_address)
  File "/usr/lib/python3.5/socket.py", line 711, in create_connection
    raise err
  File "/usr/lib/python3.5/socket.py", line 702, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused
错误-SSH操作员错误:超时
回溯(最近一次呼叫最后一次):
文件“/home/ubuntu/aiffort/.venv/lib/python3.5/site-packages/aiffort/contrib/operators/ssh_-operator.py”,执行中的第101行
使用self.ssh\u hook.get\u conn()作为ssh\u客户端:
文件“/home/ubuntu/aiffort/.venv/lib/python3.5/site-packages/aiffort/contrib/hooks/ssh\u-hook.py”,第180行,位于get\u-conn
sock=self.host\u代理)
文件“/home/ubuntu/afflow/.venv/lib/python3.5/site packages/paramiko/client.py”,第349行,在connect中
在信号上重试(lambda:sock.connect(addr))
文件“/home/ubuntu/afflow/.venv/lib/python3.5/site packages/paramiko/util.py”,第280行,在重试信号中
返回函数()
文件“/home/ubuntu/afflow/.venv/lib/python3.5/site packages/paramiko/client.py”,第349行,在
在信号上重试(lambda:sock.connect(addr))
socket.timeout:超时
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“/home/ubuntu/aiffort/.venv/lib/python3.5/site packages/aiffort/models/taskinstance.py”,第926行,在运行任务中
结果=任务\复制.执行(上下文=上下文)
文件“/home/ubuntu/afflow/.venv/lib/python3.5/site packages/afflow/contrib/operators/ssh_operator.py”,执行中第173行
raise AirflowException(“SSH运算符错误:{0}”。格式(str(e)))
airflow.Exception.AirflowException:SSH操作员错误:超时
[2019-11-26 15:23:20254]{taskinstance.py:1080}INFO-所有重试都失败;将任务标记为失败
[2019-11-26 15:23:20284]{logging_mixin.py:95}INFO-[34m2019-11-26 15:23:20284[0m]{[34mconfiguration.py:[0m299}警告[0m-配置[0m]中找不到节/键[[1msmtp[0m/[1msmtp\u用户[0m]
[2019-11-26 15:23:20284]{taskinstance.py:1086}错误-无法将电子邮件发送到:['example@abc.com']
[2019-11-26 15:23:20285]{taskinstance.py:1087}错误-[Errno 111]连接被拒绝
回溯(最近一次呼叫最后一次):
文件“/home/ubuntu/aiffort/.venv/lib/python3.5/site-packages/aiffort/contrib/operators/ssh_-operator.py”,执行中的第101行
使用self.ssh\u hook.get\u conn()作为ssh\u客户端:
文件“/home/ubuntu/aiffort/.venv/lib/python3.5/site-packages/aiffort/contrib/hooks/ssh\u-hook.py”,第180行,位于get\u-conn
sock=self.host\u代理)
文件“/home/ubuntu/afflow/.venv/lib/python3.5/site packages/paramiko/client.py”,第349行,在connect中
在信号上重试(lambda:sock.connect(addr))
文件“/home/ubuntu/afflow/.venv/lib/python3.5/site packages/paramiko/util.py”,第280行,在重试信号中
返回函数()
文件“/home/ubuntu/afflow/.venv/lib/python3.5/site packages/paramiko/client.py”,第349行,在
在信号上重试(lambda:sock.connect(addr))
socket.timeout:超时
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“/home/ubuntu/aiffort/.venv/lib/python3.5/site packages/aiffort/models/taskinstance.py”,第926行,在运行任务中
结果=任务\复制.执行(上下文=上下文)
文件“/home/ubuntu/afflow/.venv/lib/python3.5/site packages/afflow/contrib/operators/ssh_operator.py”,执行中第173行
raise AirflowException(“SSH运算符错误:{0}”。格式(str(e)))
airflow.Exception.AirflowException:SSH操作员错误:超时
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“/home/ubuntu/aiffort/.venv/lib/python3.5/site packages/aiffort/models/taskinstance.py”,第1084行,在handle\u失败中
self.email\u警报(错误)
文件“/home/ubuntu/aiffort/.venv/lib/python3.5/site-packages/aiffort/models/taskinstance.py”,第1307行,在电子邮件通知中
发送电子邮件(self.task.email、主题、html内容)
文件“/home/ubuntu/afflow/.venv/lib/python3.5/site packages/afflow/utils/email.py”,第55行,发送电子邮件
mime_子类型=mime_子类型,mime_字符集=mime_字符集,**kwargs)
文件“/home/ubuntu/afflow/.venv/lib/python3.5/site packages/afflow/utils/email.py”,第101行,在发送电子邮件\u smtp中
发送MIME电子邮件(smtp邮件发件人、收件人、msg、dryrun)
文件“/home/ubuntu/afflow/.venv/lib/python3.5/site packages/afflow/utils/email.py”,第121行,在发送MIME电子邮件中
s=smtplib.SMTP\u SSL(SMTP\u主机,SMTP\u端口)如果SMTP\u SSL其他smtplib.SMTP(SMTP\u主机,SMTP\u端口)
文件“/usr/lib/python3.5/smtplib.py”,第251行,在__
(代码,消息)=自连接(主机,端口)
文件“/usr/lib/python3.5/smtplib.py”,第335行,在connect中
self.sock=self.\u获取\u套接字(主机、端口、self.timeout)
文件“/usr/lib/python3.5/smtplib.py”,第306行,在获取套接字中
self.source(地址)
文件“/usr/lib/python3.5/socket.py”,第711行,在create_connection中
提出错误
文件“/usr/lib/python3.5/socket.py”,第702行,在create_connection中
sock.connect(sa)
ConnectionRefusedError:[Errno 111]连接被拒绝

问题解决了,实际上,端口号8888不正确。它与端口号22一起工作。

您确定正确设置了SSH密钥吗?另外,请仔细检查以确保您的实例没有任何冲突的防火墙规则