AWS Lambda передает параметры для работы с клеем

Нам нужно передать 4 параметра из AWS Lambda в AWS клеевое задание при запуске клеевого задания.

response = client.start_job_run (JobName = 'my_test_Job', Arguments = {'--yr_partition_val': 2017, '--mon_partition_val': 05, '--date_partition_val': 25, '--hour_partition_val': 07})

Клею нужно перехватить эти 4 параметра, чтобы продолжить в коде клея pyspark.

Я попытался использовать ниже в клей, чтобы поймать параметры: импорт sys из awsglue.utils импорт getResolvedOptions

args = getResolvedOptions (sys.argv, ['JOB_NAME', 'yr_partition_val', 'mon_partition_val', 'date_partition_val', 'hour_partition_val'])

но получил ошибку как: self.error(_('требуется аргумент%s') % name) awsglue.utils.GlueArgumentError: аргумент - требуется JobName

может кто-нибудь выручить.

2 ответа

AWS говорит '--JOB_NAME' является внутренним для клея и не должен быть установлен. Кроме того, аргументы чувствительны к регистру.

При звонке из -

Клей API

Name='job_name_value' должен быть указан в качестве первого аргумента

Лямбда-API

JobName='job_name_value' должен быть указан в качестве первого аргумента.См. пример ниже:

    current_year_full = '2019'
    current_month = '01'
    current_day = '21' 
    current_hour = '01'
    int_bucket_name = 'datascience-ca-input'
    glue_job_name = os.getenv("job_name")
    response = gl.start_job_run(
            JobName = glue_job_name,
            Arguments = {
                '--intermediate_bucket_name': int_bucket_name,
                '--year_partition_value': current_year_full,
                '--month_partition_value': current_month,
                '--date_partition_value': current_day,
                '--hour_partition_value': current_hour } )
      glueJobName = 'job_01'
for record in event['Records']:
    print(record['s3']['object']['key'])
    file_name = unquote_plus(record['s3']['object']['key'])
    client = boto3.client('glue')
    print("Job is going to start")
    arguments = {
        '--source': 'abc',
        '--bucket_name': 'test',
        '--folder_name': 'abc-2',
        '--file_name': file_name,
    }
    response = client.start_job_run(JobName = 'job_01', Arguments=arguments)
return {
    'statusCode': 200,
    'body': json.dumps('Glue Trigger Lambda!' )
}
Другие вопросы по тегам