in src/watchdog/__init__.py [0:0]
def get_aws_ec2_metadata_token(timeout=DEFAULT_TIMEOUT):
# Normally the session token is fetched within 10ms, setting a timeout of 50ms here to abort the request
# and return None if the token has not returned within 50ms
try:
opener = build_opener(HTTPHandler)
request = Request(INSTANCE_METADATA_TOKEN_URL)
request.add_header("X-aws-ec2-metadata-token-ttl-seconds", "21600")
request.get_method = lambda: "PUT"
try:
res = opener.open(request, timeout=timeout)
return res.read()
except socket.timeout:
exception_message = "Timeout when getting the aws ec2 metadata token"
except HTTPError as e:
exception_message = "Failed to fetch token due to %s" % e
except Exception as e:
exception_message = (
"Unknown error when fetching aws ec2 metadata token, %s" % e
)
logging.debug(exception_message)
return None
except NameError:
headers = {"X-aws-ec2-metadata-token-ttl-seconds": "21600"}
req = Request(INSTANCE_METADATA_TOKEN_URL, headers=headers, method="PUT")
try:
res = urlopen(req, timeout=timeout)
return res.read()
except socket.timeout:
exception_message = "Timeout when getting the aws ec2 metadata token"
except HTTPError as e:
exception_message = "Failed to fetch token due to %s" % e
except Exception as e:
exception_message = (
"Unknown error when fetching aws ec2 metadata token, %s" % e
)
logging.debug(exception_message)
return None