AWS CloudFormationでジョブ・トリガー組込済みのGlueワークフローを作成する

カテゴリ : Glue
公開日 : 2021/07/07 更新日 : 2021/07/07

はじめに

雑に調べるとcfnテンプレートのサンプルが見つからずかつできないっぽい情報が見つかる。 そうではなくて実際できるんだよって話。

どのようにcfnテンプレートを書けば良いのか

AWSワークショップ内のコード 「glue-workflow.yaml」を参考に書く。

注意事項

  • ワークフローに組み込む最初のトリガーのTypeは「ON_DEMAND」か「SCHEDULED」でなければならない。
    (「CONDITIONAL」不可)
  • ワークフローに組み込む2つ目以降のトリガーのTypeは「CONDITIONAL」でなければならない。
    (「ON_DEMAND」「SCHEDULED」不可)
  • トリガーのTypeに「SCHEDULED」「CONDITIONAL」を選択した場合は、「StartOnCreation: True」がPropertiesに必要。(「ON_DEMAND」は不要)
    「StartOn~」が無い場合は無効化されたトリガーが作成され、有効化するまで実行されない。
  • トリガーのType「CONDITIONAL」の場合、cron式の基準時間はUTC。
  • トリガーのType「SCHEDULED」のサンプルコードは公式ドキュメント参照
  • トリガーに複数のジョブ、クローラを実行させたい場合は、以下のようなコード。
    Properties:
      Actions:
        - JobName: 【実行ジョブ名1】
        - Jobname: 【実行ジョブ名2】
  • トリガーのタイプ「CONDITIONAL」で、
    複数のジョブを監視対象としたい場合は多分以下のようなコード。めんどくせえから試してねえ。
    Properties:
      Predicate:
        Conditions:
          - LogicalOperator: EQUALS
            JobName: 【監視ジョブ1】
            # STARTING | RUNNING | STOPPING | STOPPED | SUCCEEDED | FAILED | TIMEOUT
            State: SUCCEEDED
          - LogicalOperator: EQUALS
            JobName: 【監視ジョブ2】
            State: SUCCEEDED
        # AND(監視ジョブが全て条件を満たす) | ANY(監視ジョブのいずれかが条件を満たす)
        Logical: AND 

終わりに

Glueワークフローは、ジョブ、クローラを単純なワークフローで実行する場合に向いている。
複雑なワークフローを作りたい場合はStep Functionが向いているらしい。詳しくは知らん。
以上。

Share

Blogger : rice

Twitter GitHub

SAP
DOP