And*_*amm 5 network-programming amazon-web-services aws-lambda airflow
当前使用 AWS lambda hook 调用 lambda 时
https://airflow.apache.org/docs/stable/_api/airflow/contrib/hooks/aws_lambda_hook/index.html
如果 lambda 运行超过 350 秒,则会失败。即使在 350 秒后,任务本身仍显示其正在运行大约一个小时,然后给出默认的 Airflow 超时错误。
我非常怀疑该问题与私有子网发生的 AWS NAT 传出连接空闲超时限制有关
如何从客户端或网络端解决这个问题?
我的想法是
异步 lambda 执行并在执行完成后传递某些事件或触发侦听器以继续下一个任务。当然,这并不理想,因为我无法轻松地从 Airflow 端检查日志 在公共子网中设置自己管理的 Airflow 此设置是最不受欢迎的,因为它不安全且复杂
当前代码:
lambda_hook:AwsLambdaHook = AwsLambdaHook(function_name=function_name,region_name=region,log_type =“Tail”,invoice_type =“RequestResponse”,config = config,aws_conn_id =连接)res = lambda_hook.invoke_lambda(payload = json.dumps(payload))
能够正确触发 lambda 绝对是该服务的一个重要功能!
编辑者:anamm 于 2020 年 12 月 3 日 3:25 AM
小智 1
有一些解决方法可以用来缓解这种情况。我推荐的第一个也是最简单的方法是将 Lambda 函数的调用更改为异步,因为 Lambda 会立即将响应发送回 MWAA。通过异步调用,事件将被传递给 Lambda,而无需等待函数代码的响应。这将避免超时错误。对于异步调用,请将 dag 代码中的“invoice_type”更改为“Event”。
另一种选择是配置您自己的负载均衡器并从 DAG 向其发送请求。您可以在此处配置侦听器规则以将请求转发到 Lambda 函数以调用它。请注意,您需要确保相应地设置负载均衡器连接空闲超时,否则可能会断开与 Lambda ENI 的连接。详细步骤:
| 归档时间: |
|
| 查看次数: |
1324 次 |
| 最近记录: |