2013-06-21 7 views
9

Come posso ottenere una diagnostica utile da boto? Tutto ciò che mi sembra di ottenere è la "400 Bad Request" infuriantemente inutile. Riconosco che boto sta semplicemente passando lungo ciò che l'API sottostante rende disponibile, ma sicuramente c'è un modo per ottenere qualcosa di più utile di "Bad Request".Come posso ottenere una diagnostica utile da boto?

Traceback (most recent call last): 
    File "./mongo_pulldown.py", line 153, in <module> 
    main() 
    File "./mongo_pulldown.py", line 24, in main 
    print "snap = %r" % snap 
    File "./mongo_pulldown.py", line 149, in __exit__ 
    self.connection.delete_volume(self.volume.id) 
    File "/home/roy/deploy/current/python/local/lib/python2.7/site-packages/boto/ec2/connection.py", line 1507, in delete_volume 
    return self.get_status('DeleteVolume', params, verb='POST') 
    File "/home/roy/deploy/current/python/local/lib/python2.7/site-packages/boto/connection.py", line 985, in get_status 
    raise self.ResponseError(response.status, response.reason, body) 
boto.exception.EC2ResponseError: EC2ResponseError: 400 Bad Request 
+0

'import boto; boto.set_stream_logger ('boto') 'stamperà i risultati JSON inclusi eventuali errori riscontrati nella console. – ecoe

risposta

6

È possibile configure the boto.cfg file per essere più verbose:

[Boto] 
debug = 2 

debug: Controlla il livello di messaggi di debug che saranno stampate dalla biblioteca boto. sono definiti i seguenti valori:

0 - no debug messages are printed 
1 - basic debug messages from boto are printed 
2 - all boto debugging messages plus request/response messages from httplib 
+1

Ciò non fornisce ulteriori informazioni. Il problema è che la risposta HTTP che ritorna ha solo "400 Bad Request" nel corpo. Quello di cui ho veramente bisogno è un modo per ottenere dal server maggiori informazioni su cosa è andato storto. –

+0

Dal codice, sembra che si possano attivare queste informazioni per ogni connessione. Esempio? – dfrankow

5

io non ha avuto molta fortuna con mettere l'impostazione di debug nel file di configurazione, ma la chiamata a ec2.connect_to_region() prende un parametro di debug, con gli stessi valori come nella risposta di j0nes.

ec2 = boto.ec2.connect_to_region("eu-west-1", debug=2) 

Tutto ciò che l'oggetto di connessione invia/riceve verrà scaricato su stdout.