CloudFormation:一种定义 ACTIVATED 计划 Glue 作业触发器的方法

CloudFormation: a way to define an ACTIVATED scheduled Glue job trigger

我正在使用 CloudFormation 根据官方 documentation:

定义一个 SCHEDULED Glue 作业触发器
ParquetJobTrigger:
  Type: 'AWS::Glue::Trigger'
  Properties:
    Name: !Sub "${Prefix}_csv_to_parquet_job_trigger_${StageName}"
    Type: SCHEDULED
    Schedule: cron(0 0/1 * * ? *)
    Actions:
      - JobName: !Ref ParquetJob
        Arguments:
          "--job-bookmark-option": "job-bookmark-enable"

除一件事外,它就像一个魅力。它定义了一个状态为 CREATED 的作业触发器,我必须手动启用它:

有没有办法通过 CloudFormation 单独定义激活的计划触发器?

遇到了同样的问题并向 AWS 开具了工单。看起来他们目前没有该功能,但希望在下一个功能版本中解决。以下是他们的回复:

感谢您联系 AWS 高级支持。今天很高兴与您交谈。我正在回信跟进我们的谈话。我能够与 Glue 团队和 Cloud Formation 团队的成员取得联系,以下是我的发现:

1) 似乎无法使用资源命名空间启用 Glue 触发器:AWS::Glue::Trigger

2) 如果第一次失败,计划作业应在下一个计划时间重试

3) 作为解决上述问题的方法,您可以做的是让计划的操作在创建堆栈后触发一段特定的时间,以便您通过 Web 控制台手动启用触发器。

4) 正如我们在通话期间所讨论的那样,看起来 Lambda 函数实际上是可行的。在这种情况下,您可以让 Lambda 函数依赖于触发器资源,然后使用 lambda 函数调用 API 启动触发器 (https://docs.aws.amazon.com/cli/latest/reference/glue/start-trigger.html) 以启用触发器。这些操作应该及时发生,以便触发计划的作业。

以下是 Lambda 和 Cloud Formation 的一些有用参考资料: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/walkthrough-custom-resources-lambda-lookup-amiids.html https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html

对于任何新面孔,现在可以通过使用 StartOnCreation 属性 新触发器来实现。

UEDDBJobTrigger:
  Type: AWS::Glue::Trigger
  Properties:
    Name: Foo
    Description: Scheduled trigger
    Type: SCHEDULED
    Schedule: "cron(0 10 ? * MON-FRI *)"
    StartOnCreation: true
    Actions: 
      - JobName: !Ref TestJob