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

时间:2018-02-05 08:09:52

标签: amazon-web-services amazon-cloudformation aws-glue

我正在使用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的作业触发器,我必须手动启用它:

enter image description here

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

2 个答案:

答案 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