Airflow 气流回填命令FERNET_密钥配置缺失

Airflow 气流回填命令FERNET_密钥配置缺失,airflow,Airflow,回填时有问题。当我在命令行中运行此命令时 airflow backfill my_dag -s 2021-01-01 -e 2021-01-12 dag被触发并开始运行。第一个任务(一个没有外部依赖项的简单python脚本)完成了,但在第二个任务中,我收到了关于fernet键的错误。dag正在呼叫MSSQL操作员 cryptography.fernet.InvalidToken 如果在UI中手动触发dag,则所有步骤都会成功 如果我在CLI中的dag中触发一次执行,dag将成功。 气流da

回填时有问题。当我在命令行中运行此命令时

airflow backfill my_dag -s 2021-01-01 -e 2021-01-12
dag被触发并开始运行。第一个任务(一个没有外部依赖项的简单python脚本)完成了,但在第二个任务中,我收到了关于fernet键的错误。dag正在呼叫MSSQL操作员

cryptography.fernet.InvalidToken
  • 如果在UI中手动触发dag,则所有步骤都会成功
  • 如果我在CLI中的dag中触发一次执行,dag将成功。
    • 气流dag触发器-e'2021-01-19T04:00:00'我的dag
  • fernet密钥在配置文件中,我们已经运行了resetdb并重新创建了连接。同样的问题也存在,回填命令不起作用,但其他方法起作用
  • 还尝试使用
    --local
    标志(不确定该标志的作用),但也不起作用
  • 有没有办法排除故障

    使用LocalExecutor在prem上运行。编辑:使用.15时也存在问题

    日志:

    • 注意,它说了一些关于变量丢失的信息,但这是误导性的,因为如果我从UI手动运行它,它就会工作。关键线路是

       ERROR - Can't decrypt _val for key=xyz_users_overlap_import, FERNET_KEY configuration missing
      
    完整日志:

    INFO - Job 4303: Subtask download_user_files
    [2021-05-17 23:41:29,327] {{logging_mixin.py:120}} INFO - Running <TaskInstance: xyz_users_overlap_import.download_user_files 2021-01-22T15:10:00+00:00 [running]> on host da2m.mycorp.corp
    [2021-05-17 23:41:29,360] {{variable.py:58}} ERROR - Can't decrypt _val for key=xyz_users_overlap_import, FERNET_KEY configuration missing
    [2021-05-17 23:41:29,361] {{taskinstance.py:1150}} ERROR - 'Variable xyz_users_overlap_import does not exist'
    Traceback (most recent call last):
      File "/usr/local/lib/python3.8/site-packages/airflow/models/taskinstance.py", line 965, in _run_raw_task
        self.render_templates(context=context)
      File "/usr/local/lib/python3.8/site-packages/airflow/models/taskinstance.py", line 1424, in render_templates
        self.task.render_template_fields(context)
      File "/usr/local/lib/python3.8/site-packages/airflow/models/baseoperator.py", line 719, in render_template_fields
        self._do_render_template_fields(self, self.template_fields, context, jinja_env, set())
      File "/usr/local/lib/python3.8/site-packages/airflow/models/baseoperator.py", line 726, in _do_render_template_fields
        rendered_content = self.render_template(content, context, jinja_env, seen_oids)
      File "/usr/local/lib/python3.8/site-packages/airflow/models/baseoperator.py", line 755, in render_template
        return jinja_env.from_string(content).render(**context)
      File "/usr/local/lib/python3.8/site-packages/jinja2/environment.py", line 1090, in render
        self.environment.handle_exception()
      File "/usr/local/lib/python3.8/site-packages/jinja2/environment.py", line 832, in handle_exception
        reraise(*rewrite_traceback_stack(source=source))
      File "/usr/local/lib/python3.8/site-packages/jinja2/_compat.py", line 28, in reraise
        raise value.with_traceback(tb)
      File "<template>", line 1, in top-level template code
      File "/usr/local/lib/python3.8/site-packages/jinja2/environment.py", line 471, in getattr
        return getattr(obj, attribute)
      File "/usr/local/lib/python3.8/site-packages/airflow/models/taskinstance.py", line 1335, in __getattr__
        self.var = Variable.get(item, deserialize_json=True)
      File "/usr/local/lib/python3.8/site-packages/airflow/models/variable.py", line 117, in get
        raise KeyError('Variable {} does not exist'.format(key))
    KeyError: 'Variable xyz_users_overlap_import does not exist'
    
    INFO-作业4303:子任务下载用户文件
    [2021-05-1723:41:29327]{{logging_mixin.py:120}}INFO-在主机da2m.mycorp.corp上运行
    [2021-05-17 23:41:29360]{{variable.py:58}错误-无法解密key=xyz_users_overlap_import的值,FERNET_密钥配置丢失
    [2021-05-17 23:41:29361]{{taskinstance.py:1150}}错误-'Variable xyz_users_overlap_import不存在'
    回溯(最近一次呼叫最后一次):
    文件“/usr/local/lib/python3.8/site packages/afflow/models/taskinstance.py”,第965行,在原始任务中
    self.render_模板(上下文=上下文)
    render_templates中的文件“/usr/local/lib/python3.8/site packages/afflow/models/taskinstance.py”,第1424行
    self.task.render_模板_字段(上下文)
    文件“/usr/local/lib/python3.8/site packages/afflow/models/baseoperator.py”,第719行,位于渲染模板字段中
    self.\u do\u render\u template\u字段(self,self.template\u字段,上下文,jinja\u env,set())
    文件“/usr/local/lib/python3.8/site packages/afflow/models/baseoperator.py”,第726行,在“呈现模板”字段中
    rendered_content=self.render_模板(内容、上下文、jinja_环境、seed_OID)
    文件“/usr/local/lib/python3.8/site packages/afflow/models/baseoperator.py”,第755行,位于渲染模板中
    从字符串(content.render)返回jinja_环境(**上下文)
    文件“/usr/local/lib/python3.8/site packages/jinja2/environment.py”,第1090行,在渲染中
    self.environment.handle_exception()
    文件“/usr/local/lib/python3.8/site packages/jinja2/environment.py”,第832行,在handle\u异常中
    重新释放(*重写\回溯\堆栈(源=源))
    文件“/usr/local/lib/python3.8/site packages/jinja2/_compat.py”,第28行,重新登录
    通过_回溯(tb)提升值
    文件“”,第1行,顶层模板代码
    文件“/usr/local/lib/python3.8/site packages/jinja2/environment.py”,第471行,在getattr中
    返回getattr(对象,属性)
    文件“/usr/local/lib/python3.8/site packages/afflow/models/taskinstance.py”,第1335行,位于__
    self.var=Variable.get(项,反序列化_json=True)
    文件“/usr/local/lib/python3.8/site packages/aiffort/models/variable.py”,get中的第117行
    raise KeyError('变量{}不存在'。格式(键))
    KeyError:“变量xyz\u用户\u重叠\u导入不存在”
    
    您是否尝试过生成一个新的
    FERNET\u键
    并设置为env变量(这样您将覆盖
    aiffort.cfg
    文件中的值):

    导出气流\uuuuu核心\uuuuuu FERNET\u键=您的\u FERNET\u键

    生成新代码的代码是:

    from cryptography.fernet import Fernet
    fernet_key= Fernet.generate_key()
    print(fernet_key.decode())
    

    别忘了在安装包之前安装(
    pip安装密码术

    能否从回填中提供更多日志?另外,您是否尝试过使用
    --reset\u dagrunts
    ?可能是您以前的dag_运行正在阻止回填?@vdolez dag确实开始运行,并且第一个任务成功(第一个任务只是运行一些简单的python,不依赖于变量或其他连接/服务器)您是否也可以提供相关的dag代码示例?似乎缺少一个变量,您使用的是模板化的Jinja吗?调用
    变量.get()
    方法?@vdolez-这是误导。变量未丢失。在UI中触发Dag时,Dag会成功。通过CLI触发时,Dag也会成功,例如so
    气流Dag触发器-e'2021-01-19T04:00:00'my_Dag
    顺便说一句,如果不使用变量,Dag也会失败,任务必须查找连接。。这是费内特的关键问题。。这是没有意义的,它适用于所有其他场景。我会试试阿尔瓦罗的建议<代码>重置导入表=mssql运算符(任务id='重置导入表',mssql\U连接id='ssis\U ETLTADGING',sql='exec myproc')我可以尝试一下,但奇怪的是,通过UI和CLI手动运行dag时,dag成功了。如果使用
    --local
    runner,您可能需要安装此软件包