[英]How to make connection from Aws Glue Catalog tables to custom python shell script?
[英]AWS Python Shell - How to use Glue Catalog Connections
我在Glue中定義了一個JDBC連接,並且能夠在Glue Spark作業中成功使用它。 我如何在Glue Python Shell作業中使用相同的連接? 盡管我看到了可能的引用,但找不到任何模板該如何做。
另一種選擇是如何在Python Shell中定義JDBC連接,我需要在其中包含一個外部庫? 由於依賴性,我讀過的pyodbc
不可用。
當您將JDBC連接附加到Glue Python Shell作業時,Glue只能使用它來啟動具有安全組的指定子網中的ENI。 jdbc url,用戶名和密碼對於Python Shell作業沒有任何值。
因此,您必須提供一個外部軟件包,例如pymssql( http://www.pymssql.org/en/stable/ ),並通過腳本本身初始化連接。
您可以參考提供自己的Python庫的文檔: https : //docs.aws.amazon.com/glue/latest/dg/add-job-python.html#create-python-egg-library
這是代碼。 確保在python shell作業cloudformation模板中添加了相同的連接。 我們正在使用pg8000庫。
def get_connection(self, conn_name):
client = boto3.client('glue', region_name=self.region_id)
response = client.get_connection(Name=conn_name)
print response
connection_properties = response['Connection']['ConnectionProperties']
URL = connection_properties['JDBC_CONNECTION_URL']
url_list = URL.split("/")
host = "{}".format(url_list[-2][:-5])
port = url_list[-2][-4:]
database = "{}".format(url_list[-1])
user = "{}".format(connection_properties['USERNAME'])
pwd = "{}".format(connection_properties['PASSWORD'])
# print "user:{}".format(user)
# print "pwd:{}".format(pwd)
# print "host:{}".format(host)
# print "port:{}".format(port)
# print "database:{}".format(database)
rs_conn = dbapi.connect(database=database, host=host, port=5439, \
user=user, password=pwd, ssl=True)
cur = rs_conn.cursor()
cur.execute("set statement_timeout = 1200000")
rs_conn.commit()
cur.close()
return rs_conn
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.