クローラーの実行が完了したときに、自動的にジョブが開始されるように 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 では、トリガーによって開始された場合にのみ、すべてのジョブまたはクローラーが開始されます。依存関係チェーン内のすべてのジョブまたはクローラーが、スケジュールされたトリガまたはオンデマンドのトリガーの子孫であることを確認してください。
また、次のいずれかの方法を使用できます。