クローラーの実行が完了したときに AWS Glue ジョブを自動的に開始するにはどうすればよいですか?

所要時間1分
0

クローラーの実行が完了したときに、自動的にジョブが開始されるように AWS Glue を設定したいと考えています。

解決方法

クローラーの実行が完了すると、AWS Glue トリガーを使用してジョブを開始できます。ただし、AWS Glue コンソールではジョブのみがサポートされ、トリガーを操作する場合はクローラーはサポートされません。AWS Command Line Interface (AWS CLI) または AWS Glue API を使用して、ジョブとクローラーの両方にトリガーを設定できます。

次の AWS CLI コマンドを実行して、クローラーの実行が完了したときにジョブを開始できるトリガーを作成します。

$ aws glue create-trigger --name testTrigger --type CONDITIONAL --predicate 'Logical=AND,Conditions=[{LogicalOperator=EQUALS,CrawlerName=testCrawler,CrawlState=SUCCEEDED}]' --actions JobName=testJob --start-on-creation

注: AWS CLI コマンドの実行時にエラーが発生する場合は、AWS CLI の最新バージョンを使用していることを確認してください

Python boto3 SDK を使用してトリガーを作成することもできます。

import boto3

client = boto3.client("glue")
response = client.create_trigger(
    Name="testTrigger",
    Type="CONDITIONAL",
    Predicate={
        "Logical": "AND",
        "Conditions": [
            {
                "LogicalOperator": "EQUALS",
                "CrawlerName": "testCrawler",
                "CrawlState": "SUCCEEDED",
            },
        ],
    },
    Actions=[
        {"JobName": "testJob"},
    ],
    StartOnCreation=True,
)

前述のいずれの方法でも、クローラー testCrawler が正常に完了した後にクローラー testJob を起動できるトリガー testTrigger を作成できます。

注: クローラ testCrawler は、トリガーだけを使用して起動する必要があります。ジョブを手動で開始した場合は、トリガーによってジョブが起動されません。AWS Glue では、トリガーによって開始された場合にのみ、すべてのジョブまたはクローラーが開始されます。依存関係チェーン内のすべてのジョブまたはクローラーが、スケジュールされたトリガまたはオンデマンドのトリガーの子孫であることを確認してください。

また、次のいずれかの方法を使用できます。


AWS公式
AWS公式更新しました 2年前