AWS CloudFormationでジョブ・トリガー組込済みのGlueワークフローを作成する
はじめに
雑に調べると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