Support IAM Instance Profile in AWS auto-scaler

This commit is contained in:
allegroai 2022-03-06 18:47:44 +02:00
parent 72270b3524
commit 538e97da2d

View File

@ -28,6 +28,8 @@ class AWSDriver(CloudDriver):
aws_region = attr.ib(validator=instance_of(str), default='') aws_region = attr.ib(validator=instance_of(str), default='')
use_credentials_chain = attr.ib(validator=instance_of(bool), default=False) use_credentials_chain = attr.ib(validator=instance_of(bool), default=False)
use_iam_instance_profile = attr.ib(validator=instance_of(bool), default=False) use_iam_instance_profile = attr.ib(validator=instance_of(bool), default=False)
iam_arn = attr.ib(validator=instance_of(str), default='')
iam_name = attr.ib(validator=instance_of(str), default='')
@classmethod @classmethod
def from_config(cls, config): def from_config(cls, config):
@ -37,6 +39,8 @@ class AWSDriver(CloudDriver):
obj.aws_region = config['hyper_params'].get('cloud_credentials_region') obj.aws_region = config['hyper_params'].get('cloud_credentials_region')
obj.use_credentials_chain = config['hyper_params'].get('use_credentials_chain', False) obj.use_credentials_chain = config['hyper_params'].get('use_credentials_chain', False)
obj.use_iam_instance_profile = config['hyper_params'].get('use_iam_instance_profile', False) obj.use_iam_instance_profile = config['hyper_params'].get('use_iam_instance_profile', False)
obj.iam_arn = config['hyper_params'].get('iam_arn')
obj.iam_name = config['hyper_params'].get('iam_name')
return obj return obj
def __attrs_post_init__(self): def __attrs_post_init__(self):
@ -71,10 +75,14 @@ class AWSDriver(CloudDriver):
launch_specification["SecurityGroupIds"] = resource_conf[ launch_specification["SecurityGroupIds"] = resource_conf[
"security_group_ids" "security_group_ids"
] ]
if resource_conf.get("iam_arn", None) and resource_conf.get("iam_name", None): # Adding iam role - you can have Arn OR Name, not both, Arn getting priority
if self.iam_arn:
launch_specification["IamInstanceProfile"] = { launch_specification["IamInstanceProfile"] = {
'Arn': resource_conf["iam_arn"], 'Arn': self.iam_arn,
'Name': resource_conf["iam_name"] }
elif self.iam_name:
launch_specification["IamInstanceProfile"] = {
'Name': self.iam_name
} }
if resource_conf["is_spot"]: if resource_conf["is_spot"]: