Я использую консоль клея, а не конечную точку разработчика. Клеевая работа может получить доступ к каталогу клея и таблице, используя код ниже
datasource0 = glueContext.create_dynamic_frame.from_catalog(database =
"glue-db", table_name = "countries")
print "Table Schema:", datasource0.schema()
print "datasource0", datasource0.show()
Теперь я хочу получить метаданные для всех таблиц из базы данных glue glue-db.
Я не смог найти функцию в api awsglue.context, поэтому я использую boto3.
client = boto3.client('glue', 'eu-central-1')
responseGetDatabases = client.get_databases()
databaseList = responseGetDatabases['DatabaseList']
for databaseDict in databaseList:
databaseName = databaseDict['Name']
print ("databaseName:{}".format(databaseName))
responseGetTables = client.get_tables( DatabaseName = databaseName,
MaxResults=123)
print("responseGetDatabases{}".format(responseGetTables))
tableList = responseGetTables['TableList']
print("response Object{0}".format(responseGetTables))
for tableDict in tableList:
tableName = tableDict['Name']
print("-- tableName:{}".format(tableName))
код выполняется в лямбда-функции, но не выполняется в задании glue etl со следующей ошибкой
botocore.vendored.requests.exceptions.ConnectTimeout: HTTPSConnectionPool (host = 'glue.eu-central-1.amazonaws.com', port = 443): максимальное количество повторных попыток превышено с помощью URL: / (вызвано ConnectTimeoutError (, ' Тайм-аут соединения с glue.eu-central-1.amazonaws.com (тайм-аут соединения = 60) '))
Кажется, проблема в конфигурации среды. Клей VPC имеет две подсети
частная подсеть: с конечной точкой s3 для клея, позволяет входящий трафик из группы безопасности RDS. Она имеет
публичная подсеть: в клей vpc с нат шлюзом. Частная подсеть доступна через шлюз nat Gateway. Я не уверен, что мне здесь не хватает.