如何解决AWS MWAA设置Task日志为INFO后日志不显示问题
问题场景
创建AWS MWAA环境后,运行DAG任务失败,已将Task日志级别设为INFO,但无法查看日志,报错信息如下:
*** Unable to read remote logs from Cloudwatch (log_group: airflow-MyAirflowEnvironment-Task, log_stream: dag_id=file_copy_dag/run_id=manual__2024-04-18T16_36_29.859714+00_00/task_id=start_task/attempt=1.log)
*** An error occurred (ResourceNotFoundException) when calling the GetLogEvents operation: The specified log stream does not exist.*** Could not read served logs: Request URL is missing an 'http://' or 'https://' protocol.
查看CloudWatch确认目标日志组已存在,但对应日志流未生成。
排查与解决步骤
验证MWAA执行角色权限
MWAA执行角色必须具备写入CloudWatch日志的权限,检查角色是否附加包含以下动作的策略:logs:CreateLogStreamlogs:PutLogEventslogs:DescribeLogStreams
确保策略的资源范围覆盖目标日志组:arn:aws:logs:<区域>:<账号ID>:log-group:airflow-MyAirflowEnvironment-Task:*。
确认日志配置生效
进入MWAA控制台环境详情的「日志配置」模块,检查Task日志的级别是否为INFO,日志组名称是否与报错中的一致。若配置有误,更新后重启MWAA环境。排查任务执行状态与日志延迟
- 检查Airflow UI中任务的状态,确认任务是否已被调度执行(避免处于queued状态未启动),同时验证MWAA调度器是否正常运行。
- CloudWatch日志流生成可能存在延迟,等待5-10分钟后再次查看日志组是否生成对应流。
修复"served logs"协议错误
该问题源于webserver_base_url配置缺失协议前缀。进入MWAA环境的「配置」模块,将webserver_base_url设置为包含http://或https://的完整URL(例如https://<你的MWAA WebServer域名>),更新后重启环境。检查任务日志输出方式
确保任务代码使用Airflow标准日志组件(如logging模块或LoggingMixin),避免自定义日志输出导致日志无法写入CloudWatch。
内容的提问来源于stack exchange,提问作者Abiodun Adeoye

