背景・目的
- GlueAPIのget_job_runsは、デフォルト100件(最大200件)しか返さないので、それ以上の結果を知りたい場合は、何度も実行する必要があったのでプログラム化しました。
結論
- NextTokenを使う。
内容
APIリクエスト
- NextTokenがある場合と、それ以外で分ける必要がある。
初回もしくは、NextTokenがない場合
response = glue_client.get_job_runs(JobName=job_name)
NextTokenがある場合
glue_client.get_job_runs(JobName=job_name, NextToken=next_token)
コード全体
import json
import boto3
import time
import os
import logging
import subprocess
logger = logging.getLogger()
logger.setLevel(logging.INFO)
glue_client = boto3.client('glue')
job_name =""
def init(event):
logger.info('## ENVIRONMENT VARIABLES')
logger.info(os.environ)
logger.info('## EVENT')
logger.info(event)
global job_name
job_name = event['job_name']
def lambda_handler(event, context):
init(event)
response = glue_client.get_job_runs(JobName=job_name)
response_cnt = 0
while (True):
for line in response['JobRuns']:
logger.info(line)
response_cnt = response_cnt + 1
logger.info(response)
if response.get('NextToken'):
next_token = response['NextToken']
logger.info(next_token)
else:
break
response = glue_client.get_job_runs(JobName=job_name, NextToken=next_token)
print(response_cnt)
return {
'statusCode': 200,
}
考察
- 他のAWSのAPIでも同様に、NextTokenの考えはあるので流用可能。
参考