in cookbooks/aws-parallelcluster-slurm/files/default/head_node_slurm/slurm/pcluster_slurm_config_generator.py [0:0]
def _get_metadata(metadata_path):
"""
Get EC2 instance metadata.
:param metadata_path: the metadata relative path
:return the metadata value.
"""
try:
token = requests.put(
"http://169.254.169.254/latest/api/token",
headers={"X-aws-ec2-metadata-token-ttl-seconds": "300"},
timeout=METADATA_REQUEST_TIMEOUT,
)
headers = {}
if token.status_code == requests.codes.ok:
headers["X-aws-ec2-metadata-token"] = token.content
metadata_url = f"http://169.254.169.254/latest/meta-data/{metadata_path}"
metadata_value = requests.get(metadata_url, headers=headers, timeout=METADATA_REQUEST_TIMEOUT).text
except Exception as e:
error_msg = f"Unable to get {metadata_path} metadata. Failed with exception: {e}"
log.critical(error_msg)
raise CriticalError(error_msg)
log.debug("%s=%s", metadata_path, metadata_value)
return metadata_value