in src/sagemaker/model_monitor/model_monitoring.py [0:0]
def _attach(clazz, sagemaker_session, schedule_desc, job_desc, tags):
"""Attach a model monitor object to an existing monitoring schedule.
Args:
clazz: a subclass of this class
sagemaker_session (sagemaker.session.Session): Session object which
manages interactions with Amazon SageMaker APIs and any other
AWS services needed. If not specified, one is created using
the default AWS configuration chain.
schedule_desc (dict): output of describe monitoring schedule API.
job_desc (dict): output of describe job definition API.
Returns:
Object of a subclass of this class.
"""
monitoring_schedule_name = schedule_desc["MonitoringScheduleName"]
job_definition_name = schedule_desc["MonitoringScheduleConfig"][
"MonitoringJobDefinitionName"
]
monitoring_type = schedule_desc["MonitoringScheduleConfig"]["MonitoringType"]
role = job_desc["RoleArn"]
cluster_config = job_desc["JobResources"]["ClusterConfig"]
instance_count = cluster_config.get("InstanceCount")
instance_type = cluster_config["InstanceType"]
volume_size_in_gb = cluster_config["VolumeSizeInGB"]
volume_kms_key = cluster_config.get("VolumeKmsKeyId")
output_kms_key = job_desc["{}JobOutputConfig".format(monitoring_type)].get("KmsKeyId")
network_config_dict = job_desc.get("NetworkConfig", {})
max_runtime_in_seconds = None
stopping_condition = job_desc.get("StoppingCondition")
if stopping_condition:
max_runtime_in_seconds = stopping_condition.get("MaxRuntimeInSeconds")
env = job_desc["{}AppSpecification".format(monitoring_type)].get("Environment", None)
vpc_config = network_config_dict.get("VpcConfig")
security_group_ids = None
if vpc_config:
security_group_ids = vpc_config["SecurityGroupIds"]
subnets = None
if vpc_config:
subnets = vpc_config["Subnets"]
network_config = None
if network_config_dict:
network_config = NetworkConfig(
enable_network_isolation=network_config_dict["EnableNetworkIsolation"],
security_group_ids=security_group_ids,
subnets=subnets,
)
attached_monitor = clazz(
role=role,
instance_count=instance_count,
instance_type=instance_type,
volume_size_in_gb=volume_size_in_gb,
volume_kms_key=volume_kms_key,
output_kms_key=output_kms_key,
max_runtime_in_seconds=max_runtime_in_seconds,
sagemaker_session=sagemaker_session,
env=env,
tags=tags,
network_config=network_config,
)
attached_monitor.monitoring_schedule_name = monitoring_schedule_name
attached_monitor.job_definition_name = job_definition_name
return attached_monitor