Source code for ecs_composex.codeguru_profiler.codeguru_profiler_aws
# SPDX-License-Identifier: MPL-2.0
# Copyright 2020-2022 John Mille <john@compose-x.io>
"""
Module to find the CodeGuru profiles from tagging API
"""
import re
from ecs_composex.codeguru_profiler.codeguru_profiler_params import (
PROFILER_ARN,
PROFILER_NAME,
)
from ecs_composex.common.aws import (
define_lookup_role_from_info,
find_aws_resource_arn_from_tags_api,
)
from ecs_composex.common.logging import LOG
[docs]def get_profile_config(profile_arn, session):
"""
:param str profile_arn:
:param boto3.session.Session session:
:return:
"""
profile_parts = re.compile(
r"(?:^arn:aws(?:-[a-z]+)?:codeguru-profiler:[\S]+:[0-9]{12}:profilingGroup/)([\S]+)$"
)
profile_name = profile_parts.match(profile_arn).groups()[0]
profile_config = {
PROFILER_ARN.title: profile_arn,
PROFILER_NAME.title: profile_name,
}
return profile_config
[docs]def lookup_profile_config(lookup, session):
"""
Function to find the DB in AWS account
:param dict lookup: The Lookup definition for DB
:param boto3.session.Session session: Boto3 session for clients
:return:
"""
codeguru_profiler_re = re.compile(
r"(?:^arn:aws(?:-[a-z]+)?:codeguru-profiler:[\S]+:[0-9]{12}:profilingGroup/)([\S]+)$"
)
lookup_types = {
"codeguru-profiler": {"regexp": codeguru_profiler_re.pattern},
}
lookup_session = define_lookup_role_from_info(lookup, session)
profile_arn = find_aws_resource_arn_from_tags_api(
lookup,
lookup_session,
"codeguru-profiler",
types=lookup_types,
)
if not profile_arn:
return None
config = get_profile_config(profile_arn, lookup_session)
LOG.debug(config)
return config