in tools/jenkins-slave-creation-unix/scripts/deploy/slave-autoconnect.py [0:0]
def rename_instance(name: str):
logging.info('Renaming instance to {}'.format(name))
tok_req = urllib.request.Request(url="http://169.254.169.254/latest/api/token")
tok_req.headers = { "X-aws-ec2-metadata-token-ttl-seconds": "60" }
tok_req.method = "PUT"
token_response = urllib.request.urlopen(tok_req)
token = token_response.read().decode('utf-8')
req = urllib.request.Request(url="http://169.254.169.254/latest/dynamic/instance-identity/document")
req.headers = { "X-aws-ec2-metadata-token": token }
response = urllib.request.urlopen(req)
instance_info = response.read().decode('utf-8')
logging.debug('Instance info: {}'.format(instance_info))
region_match = re.search(REGION_REGEX, instance_info)
instance_id_match = re.search(INSTANCE_ID_REGEX, instance_info)
if not region_match or not instance_id_match:
raise RuntimeError("Unable to determine instance id or region. Instance info: {}".format(instance_info))
region = region_match.group(1)
instance_id = instance_id_match.group(1)
logging.debug('Instance region: {} Instance id: {}'.format(region, instance_id))
ec2 = boto3.resource('ec2', region_name=region)
ec2.create_tags(
DryRun=False,
Resources=[
instance_id
],
Tags=[
{
'Key': 'Name',
'Value': name
},
]
)