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

Terraform配置AWS Glue Crawler每日调度时cron表达式报错问题

解决AWS Glue Crawler Terraform调度表达式无效的问题

报错原因

你的cron表达式cron(0 23 * * *)不符合AWS CloudWatch Events的语法规则,核心问题是:

  • AWS的cron要求日期(day-of-month)和星期(day-of-week)不能同时使用通配符*,两者必须有一个设为?,表示不关注该维度的匹配,否则会触发冲突报错。
  • 标准cron是5字段格式,而AWS Glue依赖的CloudWatch Events cron是6字段格式(分 时 日 月 周 年,年份可选),但即使省略年份,也必须遵守日期/星期的互斥规则。

修复后的配置

将schedule字段修改为符合AWS规则的表达式,比如每日23点执行的正确写法:

resource "aws_glue_crawler" "test" {
  name              = "test"
  description       = "Ctest"
  role              = data.aws_iam_role.test.arn
  database_name     = "test"
  schedule          = "cron(0 23 * * ? *)" # 带年份的写法,年份用*表示任意

  schema_change_policy {
    delete_behavior = "LOG"
    update_behavior = "LOG"
  }

  s3_target {
    path        = "s3://test//"
    sample_size = 10
  }

  recrawl_policy {
    recrawl_behavior = "CRAWL_NEW_FOLDERS_ONLY"
  }

  configuration = jsonencode(
    {
      CreatePartitionIndex = true
      Version = 1
    }
  )
}

或者省略年份(同样有效):

schedule = "cron(0 23 * * ?)"

补充说明

  • AWS cron的6字段顺序为:分钟 小时 日期 月份 星期 年份,所有字段取值范围需符合CloudWatch Events的要求(比如小时是0-23,分钟0-59等)。
  • 当需要指定每日执行时,固定小时和分钟,日期设为*,星期设为?(或反之),明确表示只按日期维度触发,忽略星期维度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 05:37:47