def _attach()

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