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

And*_*sov 5 amazon-web-services aws-cloudformation aws-glue

我正在使用CloudFormation 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"
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

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

小智 9

对于任何新手来说,现在可以通过使用新触发器的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
Run Code Online (Sandbox Code Playgroud)

  • 很好,谢谢!我要补充一点,因为属性说仅适用于新触发器。如果将 StartOnCreation 添加到 CF,现有触发器不会从 CREATED 更改为 ACTIVATED。 (3认同)

小智 6

有同样的问题,并开通了AWS的门票.看起来他们目前没有该功能,但希望在他们的下一个功能版本中解决.以下是他们的回答:

感谢您与AWS premium支持联系.很高兴今天和你说话.我正在写回来跟进我们的谈话.我能够与Glue团队成员和Cloud Formation团队取得联系以下是我的发现:

1)看起来没有使用资源命名空间启用Glue触发器:AWS :: Glue :: Trigger

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

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

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

以下是Lambda和云的形成了一些有益的参考: 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

  • 2018年11月,仍然无法通过CloudFormation默认激活或设置为激活状态。带有Lambda函数的自定义资源仍然是最好的选择。 (3认同)