def build_profiler()

in codeguru_profiler_agent/profiler_builder.py [0:0]


def build_profiler(pg_name=None, region_name=None, credential_profile=None,
                   env=os.environ, session_factory=boto3.session.Session, profiler_factory=None, override=None,
                   should_autocreate_profiling_group=False):
    """
    Creates a Profiler object from given parameters or environment variables
    :param pg_name: given profiling group name, default is None
    :param region_name: given region name, default is None
    :param credential_profile: Name of the profile created in credential file used for submitting profiles
    :param env: environment variables are used if parameters are not provided, default is os.environ
    :param session_factory: (For testing) function for creating boto3.session.Session, default is boto3.session.Session
    :param override: a dictionary with possible extra parameters to override default values
    :param should_autocreate_profiling_group: True when Compute Platform is AWS Lambda. False otherwise
    :return: a Profiler object or None, this function does not throw exceptions
    """
    if profiler_factory is None:
        # We importing Profiler here rather than at the head is to avoid having import loop
        from codeguru_profiler_agent.profiler import Profiler
        profiler_factory = Profiler
    try:
        if not _is_enabled(env):
            logger.info("CodeGuru Profiler is not started as it has been explicitly disabled. Set environment " +
                        "variable " + ENABLED_ENV + " to true if you wish to enable profiler.")
            return None

        _check_credential_through_environment(env)

        name_from_arn, region_from_arn, _account_id = _read_profiling_group_arn(env)
        profiling_group_name = _get_profiling_group_name(pg_name, name_from_arn, env)
        if not profiling_group_name:
            if should_autocreate_profiling_group:
                profiling_group_name = "aws-lambda-" + env.get(AWS_LAMBDA_FUNCTION_NAME_ENV_VAR_KEY)
            else:
                logger.info("Could not find a profiling group name to start the CodeGuru Profiler agent. "
                            + "Add command line argument or environment variable. e.g. " + PG_ARN_ENV)
                return None
        region = _get_region(region_name, region_from_arn, env)
        session = session_factory(region_name=region, profile_name=credential_profile)

        override_values = _read_override(env)
        if override:
            override_values.update(override)
        return profiler_factory(profiling_group_name=profiling_group_name, region_name=region, aws_session=session,
                                environment_override=override_values)

    except Exception:
        # print stack trace for unknown errors are they can help us investigate.
        logger.info("Unable to create profiler", exc_info=True)
    return None