![](/img/trans.png)
[英]Python, AttributeError: 'PlayerPaddle' object has no attribute 'update'
[英]Python/Airflow AttributeError: 'AwsLambdaHook' object has no attribute 'update_relative'
由于此代码片段位于 elif 循环中,因此我尝试以多种方式对其进行分解,但这一切似乎都归结为 AwsLambdaHook 给我带来了麻烦。 也就是说,即使将所有内容硬编码为仅 lambda 挂钩并删除其他“elif”部分也无济于事。 这是我在 Airflow 中收到的错误:
Broken DAG: [/x/y/z/dag.py] Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/airflow/models/baseoperator.py", line 1267, in set_downstream
self._set_relatives(task_or_task_list, upstream=False)
File "/usr/local/lib/python3.7/site-packages/airflow/models/baseoperator.py", line 1211, in _set_relatives
task_object.update_relative(self, not upstream)
AttributeError: 'AwsLambdaHook' object has no attribute 'update_relative'
使用以下代码从配置中检索作业,j 是在 for 循环中使用的 lambda 函数/胶水作业:
from airflow.providers.amazon.aws.hooks.lambda_function import AwsLambdaHook
[...]
input_job_name = list(jobs[j].keys())[0]
[...]
lambda_step = AwsLambdaHook(function_name = input_job_name,
region_name='us-east-1', log_type='None', qualifier='$LATEST',
invocation_type='RequestResponse', config=None, aws_conn_id='aws_default')
start >> lambda_step >> end
我的代码中没有任何地方引用相对上游/下游序列或类似的东西。 我不确定我是否需要,如果需要,在哪里?
您正在使用钩子而不是运算符来为您的 DAG 声明 lambda_step 。
有允许调用 AWS lambda 函数的AwsLambdaInvokeFunctionOperator
。 我强烈建议采用这种方法。
您可以将 lambda 步骤编写为:
from airflow.providers.amazon.aws.operators.aws_lambda import AwsLambdaInvokeFunctionOperator
lambda_step = AwsLambdaInvokeFunctionOperator(
function_name=input_job_name,
qualifier='$LATEST',
invocation_type='RequestResponse',
)
另一种方法是在AwsLambdaHook
的回调中应用PythonOperator
。
from airflow.operators.python import PythonOperator
#...
def invoke_lambda_function(**kwargs):
hook = AwsLambdaHook(aws_conn_id=kwargs.pop('aws_conn_id'))
result = hook.invoke_lambda(**kwargs)
return result
lambda_step = PythonOperator(
python_callable=invoke_lambda_function,
op_kwargs=dict(
function_name=input_job_name,
region_name='us-east-1',
log_type=None,
qualifier='$LATEST',
invocation_type='RequestResponse',
config=None,
aws_conn_id='aws_default'
)
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.