Как я могу использовать функцию Lambda для вызова функции Glue (ETL), когда текстовый файл загружается в корзину S3 - PullRequest
2 голосов
/ 27 марта 2019

Я пытаюсь настроить лямбда-функцию, которая активирует функцию Glue, когда файл .txt загружается в корзину S3, я использую python 3.7

Пока у меня есть это:

from __future__ import print_function

import json
import boto3
import urllib

print('Loading function')

s3 = boto3.client('s3') 

def lambda_handler(event, context): # handler
    source_bucket = event['Records'][0]['s3']['bucket']['name']
    key = urllib.parse.quote_plus(event['Records'][0]['s3']['object']['key'].encode('utf8'))
    try:
        # what to put here
    except Exception as e:
        print(e)
        print('Error')
        raise e

Но я не понимаю, как вызвать функцию склеивания

Ответы [ 2 ]

1 голос
/ 28 марта 2019

Мне удается сделать это так:

from __future__ import print_function
import json
import boto3

client = boto3.client('glue')

def lambda_handler(event, context):
    response = client.start_job_run(JobName = 'GLUE_CODE_NAME')

Позже я опубликую событие S3

0 голосов
/ 27 марта 2019

Можно настроить уведомление о событии S3, которое будет запускать эту лямбда-функцию при вызове действий объекта PUT для префикса S3.

https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-event-notifications.html

Эта лямбда-функция может затем запустить действие StartJobRun Glue API.

https://docs.aws.amazon.com/glue/latest/webapi/API_StartJobRun.html

...