0
votes

Collez les moments d'emploi lorsque vous appelez AWS Boto3 client API

J'utilise la console de colle non de devince de développement. Le travail de colle est capable d'accéder au catalogue de colle et à la table en utilisant le code ci-dessous xxx pré>

maintenant, je veux obtenir les métadonnées pour toutes les tables de la base de données de la colle Glue-DB. Je n'ai pas trouvé de fonction dans Awsglue.Context API, donc j'utilise Boto3. P>

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))


4 commentaires

Pouvez-vous vérifier si 443 port est ouvert à Internet car il nécessite d'autres services pour qu'il fonctionne et vérifiez également d'essayer de passer la région avec le client = Boto3.Client ('Colle')


Oui, le port 443 est ouvert et j'ai ajouté la région, encore une fois après 15 minutes et le travail échoue. Le groupe de sécurité de la colle VPC ressemble à ceci. J'ai autorisé presque tout le trafic à tester, mais je ne peux toujours pas connecter de la colle à l'aide de Boto3 tout TCP TCP 0 - 65535 0.0.0.0/0 Tout TCP TCP 0 - 65535 Auto-référence PostgreSQL TCP 5432 SG de la VPC homologuée Tout le trafic Tous Tous les groupes auto référenciers Tout le trafic de tous les SG de la VPC paired


Salut @uraish avez-vous trouvé une solution pour cela? Je suis confronté au même problème et j'apprécie beaucoup d'aide. Merci.


Même problème ici, @uraish si vous avez trouvé une solution, veuillez mettre à jour. Merci!


3 Réponses :


0
votes

Pouvez-vous s'il vous plaît essayer la création du client Boto comme ci-dessous en spécifiant la région explicitement?

client = boto3.client('glue',region_name='eu-central-1')


1 commentaires

J'ai explicitement spécifié une région, vous pouvez également le voir dans le journal des erreurs. bootocore.vendored.requestS.Exception.ConnectTimeout: httpsconnectionpool (host = 'glu.eutrentral-1.amazonaws.com', port = 443): MAX de tentatives dépassées avec URL: / (causée par ConnectTimeouterror (, "Connexion à la colle .eu-central-1.Mazonaws.com a expiré. (Connecter le timeout = 60) '))



0
votes

Essayez d'utiliser un proxy lors de la création du client BOTO3:

from pyhocon import ConfigFactory
service_name = 'glue'


default = ConfigFactory.parse_file('glue-default.conf')
override = ConfigFactory.parse_file('glue-override.conf')

host = override.get('proxy.host', default.get('proxy.host'))
port = override.get('proxy.port', default.get('proxy.port'))

config = Config()

if host and port:
    config.proxies = {'https': '{}:{}'.format(host, port)}

client = boto3.Session(region_name=region).client(service_name=service_name, config=config)


0 commentaires

0
votes

J'ai eu un problème similaire lorsque j'exécuterais cette commande de Colle Python Shell.

donc j'ai créé le point final (VPC-> points de terminaison) pour le service de colle (nom de service: "com.amazonaws.eu-west-1.glue"), celui-ci a été affecté au même sous-réseau et au même groupe de sécurité que la connexion de la colle qui a été utilisé dans le travail de la coque de la colle Python.


0 commentaires