You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AWS CDK创建Eventbridge调度触发Glue数据质量规则集运行

实现AWS Glue数据质量规则集的CDK调度方案

要在CDK中不依赖Lambda实现Glue数据质量规则集的调度,核心是通过aws_scheduler.CfnSchedule直接调用Glue的API(对应控制台手动创建EventBridge调度的逻辑),以下是具体实现步骤:

1. 明确核心逻辑

控制台自动创建的调度本质是EventBridge Scheduler调用Glue的StartDataQualityRuleSetRun(运行现有规则集)或StartDataQualityRuleRecommendationRun(生成规则推荐)API。CDK中需手动配置Scheduler的目标为Glue服务,并传递API所需参数。

2. 创建IAM角色(Scheduler调用Glue的权限)

首先需要一个IAM角色,允许EventBridge Scheduler调用指定的Glue API,同时信任scheduler.amazonaws.com作为主体:

import * as iam from 'aws-cdk-lib/aws-iam';
import * as scheduler from 'aws-cdk-lib/aws-scheduler';
import * as cdk from 'aws-cdk-lib';

const app = new cdk.App();
const stack = new cdk.Stack(app, 'GlueDQScheduleStack');

// 1. 创建Scheduler调用Glue的角色
const schedulerGlueRole = new iam.Role(stack, 'SchedulerGlueDQInvokeRole', {
  assumedBy: new iam.ServicePrincipal('scheduler.amazonaws.com'),
  description: '允许EventBridge Scheduler调用Glue数据质量API',
});

// 2. 给角色添加API调用权限(以StartDataQualityRuleSetRun为例)
schedulerGlueRole.addToPolicy(new iam.PolicyStatement({
  actions: ['glue:StartDataQualityRuleSetRun'],
  resources: [
    // 规则集ARN
    `arn:aws:glue:${stack.region}:${stack.account}:ruleset/your-rule-set-name`,
    // 关联的Glue表ARN(如果数据源是Glue表)
    `arn:aws:glue:${stack.region}:${stack.account}:table/your-db-name/your-table-name`,
  ],
}));

3. 创建EventBridge Scheduler调度

配置调度的触发频率、目标为Glue服务,并传入API请求参数:

// 创建调度(每天UTC凌晨1点运行,对应北京时间9点)
const dqRuleSetSchedule = new scheduler.CfnSchedule(stack, 'GlueDQRuleSetSchedule', {
  scheduleExpression: 'cron(0 1 * * ? *)',
  flexibleTimeWindow: { mode: 'OFF' }, // 关闭灵活时间窗口,严格按调度执行
  target: {
    // Glue服务的固定ARN格式
    arn: `arn:aws:glue:${stack.region}:${stack.account}:service`,
    roleArn: schedulerGlueRole.roleArn,
    // API请求参数,需符合Glue API的JSON格式
    input: JSON.stringify({
      RuleSetName: 'your-rule-set-name',
      // 数据源配置(这里以Glue表为例,也可以用S3Path)
      DataSource: {
        GlueTable: {
          DatabaseName: 'your-db-name',
          TableName: 'your-table-name',
          // 分区表可指定PartitionValues: ['2024-05-20']
        }
      },
      // 执行数据质量任务的Glue角色ARN(需具备数据源访问、CloudWatch日志权限)
      Role: 'arn:aws:iam::123456789012:role/your-glue-execution-role',
      // 可选参数:WorkerType、NumberOfWorkers等
      WorkerType: 'G.1X',
      NumberOfWorkers: 2,
    }),
    // 指定调用的Glue API动作和版本
    awsParameters: {
      Action: 'StartDataQualityRuleSetRun',
      Version: '2017-03-31' // Glue API固定版本号
    }
  },
  // 可选:指定时区,比如'Asia/Shanghai'
  scheduleExpressionTimezone: 'Asia/Shanghai',
});

4. 关键参数说明

  • scheduleExpression:支持cron或rate表达式,比如rate(1 day)表示每天运行一次
  • target.awsParameters.Action:必须与Glue API名称完全匹配,如需生成规则推荐则改为StartDataQualityRuleRecommendationRun
  • target.input:需严格遵循对应API的请求参数格式,可参考AWS官方文档的参数说明
  • 执行角色权限:input中指定的Glue执行角色,必须具备访问数据源(S3/Glue表)、写入CloudWatch日志的权限

5. 规则推荐调度的适配

如果需要调度规则推荐任务,只需修改以下两处:

  1. 角色权限添加glue:StartDataQualityRuleRecommendationRun
  2. Scheduler的awsParameters.Action改为StartDataQualityRuleRecommendationRun,同时调整input中的参数(比如无需指定RuleSetName,但仍需DataSource和Role)

内容的提问来源于stack exchange,提问作者vice

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 12:50:00