in cartography/intel/aws/organizations.py [0:0]
def get_aws_accounts_from_botocore_config(session):
d = {}
for profile_name in session.available_profiles:
if profile_name == 'default':
logger.debug("Skipping AWS profile 'default'.")
continue
try:
boto3_session = boto3.Session(profile_name=profile_name)
except (botocore.exceptions.BotoCoreError, botocore.exceptions.ClientError) as e:
logger.debug("Error occurred calling boto3.Session() with profile_name '%s'.", profile_name, exc_info=True)
logger.error(
(
"Unable to initialize an AWS session using profile '%s', an error occurred: '%s'. Make sure your "
"AWS credentials are configured correctly, your AWS config file is valid, and your credentials "
"have the SecurityAudit policy attached."
),
profile_name,
e
)
continue
try:
d[profile_name] = get_current_aws_account_id(boto3_session)
except (botocore.exceptions.BotoCoreError, botocore.exceptions.ClientError) as e:
logger.debug(
"Error occurred getting AWS account number with profile_name '%s'.",
profile_name,
exc_info=True
)
logger.error(
(
"Unable to get AWS account number using profile '%s', an error occurred: '%s'. Make sure your AWS "
"credentials are configured correctly, your AWS config file is valid, and your credentials have "
"the SecurityAudit policy attached."
),
profile_name,
e
)
continue
logger.debug(
"Discovered AWS account '%s' associated with configured profile '%s'.",
d[profile_name],
profile_name
)
return d