我正在使用CloudFormation根据官方documentation定义SCHEDULED
胶水作业触发器:
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单独定义激活的预定触发器?
答案 0 :(得分:6)
遇到同样的问题并用AWS打开了一张票。看起来他们目前没有该功能,但希望在他们的下一个功能版本中解决。以下是他们的回复:
感谢您与AWS高级支持小组联系。很高兴今天和你说话。我正在写回来跟进我们的谈话。我能够与Glue团队成员和Cloud Formation团队取得联系以下是我的发现:
1)看起来没有使用资源命名空间启用Glue触发器:AWS :: Glue :: Trigger
2)如果第一次失败,预定作业应在下一个预定时间重试
3)作为解决上述问题的方法,您可以做的是在创建堆栈后让计划的操作触发一定的时间长度,以便您通过Web控制台手动启用触发器。
4)正如我们的调用中所讨论的,看起来Lambda函数实际上可行。在这种情况下,您可以让Lambda函数依赖于Trigger资源,然后使用lambda函数启用API调用start-trigger(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
答案 1 :(得分:1)
对于任何新手,现在都可以通过将 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