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