CDK创建的MWAA环境DAG处理超时无法加载,请求排查原因
MWAA环境DAG处理超时不显示问题排查与解决
问题情况
用AWS CDK创建的MWAA环境,基础设施部署成功,但Airflow前端看不到DAG。查看DAG处理器管理器日志发现:
- DAG文件处理进程因超时被终止,比如
tutorial.py处理耗时超50秒 - 日志显示未识别到DAG,且存在处理错误
对比AWS UI控制台创建的同配置(网络、工作配置、执行角色等几乎一致)MWAA环境,后者能正常处理DAG,单文件处理耗时不到1秒。怀疑是CDK代码里未显式设置endpointManagement属性,其默认配置导致了该问题。
问题根源
AWS CDK中mwaa.CfnEnvironment的endpointManagement默认值为PRIVATE_ONLY,但控制台创建时,当webserverAccessMode设为PUBLIC_ONLY,endpointManagement默认会设为PUBLIC_ONLY。这个属性决定了MWAA访问AWS服务的端点类型:
- 设为
PRIVATE_ONLY时,MWAA只能通过VPC端点访问S3、Secrets Manager等服务,如果VPC内未配置对应的VPC端点,会导致DAG处理时访问依赖服务超时,最终进程被终止。 - 控制台创建的
PUBLIC_ONLY模式环境,会自动通过公网端点访问AWS服务,不会因VPC端点缺失导致超时。
修复方案
在CDK代码里显式将endpointManagement设为PUBLIC_ONLY,与控制台环境保持一致。修改后的代码如下:
const mwaaCfnEnvironment = new mwaa.CfnEnvironment(this, 'MwaaEnvironment', { name: `CdpAirflow-${props.environment}`, airflowVersion: '2.8.1', sourceBucketArn: mwaaBucket.bucketArn, dagS3Path: 'dags/', requirementsS3Path: 'requirements.txt', environmentClass: 'mw1.small', executionRoleArn: mwaaExecutionRole.roleArn, maxWorkers: 10, webserverAccessMode: 'PUBLIC_ONLY', // 显式配置端点管理模式为PUBLIC_ONLY endpointManagement: 'PUBLIC_ONLY', airflowConfigurationOptions: { 'core.default_timezone': 'utc', 'secrets.backend': 'airflow.providers.amazon.aws.secrets.secrets_manager.SecretsManagerBackend', 'secrets.backend_kwargs': '{"connections_prefix": "airflow/connections", "variables_prefix": "airflow/variables"}' }, loggingConfiguration: { dagProcessingLogs: { enabled: true, logLevel: 'DEBUG' }, schedulerLogs: { enabled: true, logLevel: 'DEBUG' }, taskLogs: { enabled: true, logLevel: 'DEBUG' }, webserverLogs: { enabled: true, logLevel: 'DEBUG' }, workerLogs: { enabled: true, logLevel: 'DEBUG' }, }, networkConfiguration: { subnetIds: subnetIds, securityGroupIds: securityGroupIds }, });
额外验证点
- 确认CDK创建的执行角色权限与控制台环境一致,确保拥有S3桶、Secrets Manager的访问权限
- 如果必须使用
PRIVATE_ONLY模式,需要在VPC中创建S3、Secrets Manager的VPC端点,同时配置安全组允许相关流量
内容的提问来源于stack exchange,提问作者James Kelleher
相关产品推荐
相关产品推荐

