J'ai essayé certains de ce qui précède, et quand pas fonctionnant sur Amazon j'ai eu des problèmes d'accès 169.254.169.254. Peut-être que cela a quelque chose à voir avec le fait que je cours depuis une géographie non américaine.
Dans tous les cas, voici un morceau de code qui a fonctionné pour moi:
def running_on_amazon():
import urllib2
import socket
# I'm using curlmyip.com, but there are other websites that provide the same service
ip_finder_addr = "http://curlmyip.com"
f = urllib2.urlopen(ip_finder_addr)
my_ip = f.read(100).strip()
host_addr = socket.gethostbyaddr(my_ip)
my_public_name = host_addr[0]
amazon = (my_public_name.find("aws") >=0)
return amazon # returns a boolean value.
Pour votre information, les anciennes versions de Boto (par exemple 'v2.2.2 python-boto' sur Ubuntu précise) ne prennent pas en charge la' paramètres timeout' et 'num_retries'. –