AWS Glue上でPython Shellをつかい、ワークフロー上でエラーとなった
jobのエラー内容を取得したいのですがコーディングがわからず、お助けください。
boto3のGlueクライエント get_workflowより受け取った以下レスポンスから
JobRunState(['Workflow']['Graph']['Nodes']['JobDetails']['JobRuns']['JobRunState'])が'FAILED'となったJOBのErrorMessageを取得したいです。
Responseまでは取得できているのですが、どのようにデータ抽出(検索クエリ)すればよいのかご教示頂きたいです。
※追記
以下の方法でJubRunState事体は取得できるのですが、Nodes以下に複数のJobが入っており、JubRunStateがSuccessed、Failedのものが混在しています。取得したいのはこのステータスがFailedとなったJOBのErrorMessageなのですが、JSONにおける指定行のデータを取得する方法がわからず質問させて頂きました。
例:以下数字部分は複数あり、その中でJubRunStateがFailedになったものを抜き出したいです。
response['Workflow']['LastRun']['Graph']['Nodes'][2]['JobDetails']['JobRuns'][0]['JobRunState']
Python
1(レスポンスを取得するまでの処理) 2import json 3import sys 4import boto3 5from awsglue.utils import getResolvedOptions 6 7glue_client = boto3.client("glue") 8 9# 実行パラメータ取得 10args = getResolvedOptions(sys.argv, ['WORKFLOW_NAME', 'WORKFLOW_RUN_ID','chimeURL']) 11workflow_name = args['WORKFLOW_NAME'] 12workflow_run_id = args['WORKFLOW_RUN_ID'] 13 14try: 15 16 #ワークフロー情報取得 17 response = glue_client.get_workflow( 18 Name=workflow_name, 19 IncludeGraph=True 20 ) 21
JSON
1Response Syntax 2{ 3 'Workflow': { 4 'Name': 'string', 5 'Description': 'string', 6 'DefaultRunProperties': { 7 'string': 'string' 8 }, 9 'CreatedOn': datetime(2015, 1, 1), 10 'LastModifiedOn': datetime(2015, 1, 1), 11 'LastRun': { 12 'Name': 'string', 13 'WorkflowRunId': 'string', 14 'PreviousRunId': 'string', 15 'WorkflowRunProperties': { 16 'string': 'string' 17 }, 18 'StartedOn': datetime(2015, 1, 1), 19 'CompletedOn': datetime(2015, 1, 1), 20 'Status': 'RUNNING'|'COMPLETED'|'STOPPING'|'STOPPED'|'ERROR', 21 'ErrorMessage': 'string', 22 'Statistics': { 23 'TotalActions': 123, 24 'TimeoutActions': 123, 25 'FailedActions': 123, 26 'StoppedActions': 123, 27 'SucceededActions': 123, 28 'RunningActions': 123 29 }, 30 'Graph': { 31 'Nodes': [ 32 { 33 'Type': 'CRAWLER'|'JOB'|'TRIGGER', 34 'Name': 'string', 35 'UniqueId': 'string', 36 'TriggerDetails': { 37 'Trigger': { 38 'Name': 'string', 39 'WorkflowName': 'string', 40 'Id': 'string', 41 'Type': 'SCHEDULED'|'CONDITIONAL'|'ON_DEMAND'|'EVENT', 42 'State': 'CREATING'|'CREATED'|'ACTIVATING'|'ACTIVATED'|'DEACTIVATING'|'DEACTIVATED'|'DELETING'|'UPDATING', 43 'Description': 'string', 44 'Schedule': 'string', 45 'Actions': [ 46 { 47 'JobName': 'string', 48 'Arguments': { 49 'string': 'string' 50 }, 51 'Timeout': 123, 52 'SecurityConfiguration': 'string', 53 'NotificationProperty': { 54 'NotifyDelayAfter': 123 55 }, 56 'CrawlerName': 'string' 57 }, 58 ], 59 'Predicate': { 60 'Logical': 'AND'|'ANY', 61 'Conditions': [ 62 { 63 'LogicalOperator': 'EQUALS', 64 'JobName': 'string', 65 'State': 'STARTING'|'RUNNING'|'STOPPING'|'STOPPED'|'SUCCEEDED'|'FAILED'|'TIMEOUT', 66 'CrawlerName': 'string', 67 'CrawlState': 'RUNNING'|'CANCELLING'|'CANCELLED'|'SUCCEEDED'|'FAILED' 68 }, 69 ] 70 }, 71 'EventBatchingCondition': { 72 'BatchSize': 123, 73 'BatchWindow': 123 74 } 75 } 76 }, 77 'JobDetails': { 78 'JobRuns': [ 79 { 80 'Id': 'string', 81 'Attempt': 123, 82 'PreviousRunId': 'string', 83 'TriggerName': 'string', 84 'JobName': 'string', 85 'StartedOn': datetime(2015, 1, 1), 86 'LastModifiedOn': datetime(2015, 1, 1), 87 'CompletedOn': datetime(2015, 1, 1), 88 'JobRunState': 'STARTING'|'RUNNING'|'STOPPING'|'STOPPED'|'SUCCEEDED'|'FAILED'|'TIMEOUT', 89 'Arguments': { 90 'string': 'string' 91 }, 92 'ErrorMessage': 'string', 93 'PredecessorRuns': [ 94 { 95 'JobName': 'string', 96 'RunId': 'string' 97 }, 98 ], 99 'AllocatedCapacity': 123, 100 'ExecutionTime': 123, 101 'Timeout': 123, 102 'MaxCapacity': 123.0, 103 'WorkerType': 'Standard'|'G.1X'|'G.2X', 104 'NumberOfWorkers': 123, 105 'SecurityConfiguration': 'string', 106 'LogGroupName': 'string', 107 'NotificationProperty': { 108 'NotifyDelayAfter': 123 109 }, 110 'GlueVersion': 'string' 111 }, 112 ] 113 }, 114 'CrawlerDetails': { 115 'Crawls': [ 116 { 117 'State': 'RUNNING'|'CANCELLING'|'CANCELLED'|'SUCCEEDED'|'FAILED', 118 'StartedOn': datetime(2015, 1, 1), 119 'CompletedOn': datetime(2015, 1, 1), 120 'ErrorMessage': 'string', 121 'LogGroup': 'string', 122 'LogStream': 'string' 123 }, 124 ] 125 } 126 }, 127 ], 128 'Edges': [ 129 { 130 'SourceId': 'string', 131 'DestinationId': 'string' 132 }, 133 ] 134 }, 135 'StartingEventBatchCondition': { 136 'BatchSize': 123, 137 'BatchWindow': 123 138 } 139 }, 140※以下省略
回答2件
あなたの回答
tips
プレビュー