Поскольку клей не содержит сервера, /path/to/library/dir
отсутствует.
python процессам в glue требуется несколько вещей для подключения к внешним базам данных, таким как ваш oracle сервер.
python библиотеки должны быть упакованы как .egg
или .whl
, загруженные на s3, и местоположение этих файлов должно быть указано при создании задания (поле Python Library Path
). это относится к любой библиотеке, которую вы создаете или которую вы обычно pip install
, но они недоступны в среде, которую aws предоставляет для процессов склеивания . Поэтому вам нужно будет создать .egg
для cx_Oracle
локально, загрузить на s3 и указать путь в Python Library Path
при создании вашей работы. Если вы уже создали задание, вы можете отредактировать задание и предоставить секретные данные s3-path-to-cs-oracle.egg
, такие как учетные данные подключения, из безопасной внешней службы с помощью сценария etl. Одним из вариантов является сохранение учетных данных oracle в клей. Из aws клеевой консоли go к соединениям добавьте соединение jdb c и сохраните свои учетные данные базы данных.
В своем сценарии etl используйте boto3. client ('glue'). get_connection для получения сведений о соединении и, используя загруженную пользователем библиотеку cx_Oracle
, подключитесь к базе данных. Вот пример фрагмента, который вам нужно будет адаптировать и включить в ваш скрипт etl
сниппет:
import boto3
import cx_Oracle as orcl
glue = boto3.client('glue')
resp = glue.get_connection(Name='my-oracle-connection')
props = resp['Connection']['ConnectionProperties']
dsn = props['JDBC_CONNECTION_URL'].split('//')[-1]
user = props['USERNAME']
pw = props['PASSWORD']
db = orcl.connect(user, pw, dsn)
#^ `db` should be a connection to your oracle db