Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def get_account_id(profile: dict, call_aws: bool = False) -> str:
logger.info('Getting account ID from profile: %s', json.dumps(profile, indent=2))
if profile.get('role_arn'):
return profile['role_arn'].replace('arn:aws:iam::', '').split(':')[0]
if profile.get('mfa_serial'):
return profile['mfa_serial'].replace('arn:aws:iam::', '').split(':')[0]
if call_aws and profile.get('aws_access_key_id') and profile.get('aws_secret_access_key'):
return aws_lib.get_account_id(profile_to_credentials(profile))
return 'Unavailable'
def main():
try:
if '--debug' in sys.argv:
logger.setLevel(logging.DEBUG)
logger.debug('Debug logs are visible')
elif '--info' in sys.argv:
logger.setLevel(logging.INFO)
logger.info('Info logs are visible')
logger.debug('Executing awsume')
run_awsume(sys.argv[1:])
except KeyboardInterrupt:
pass
def assume_role_from_cli(config: dict, arguments: dict, profiles: dict):
region = profile_lib.get_region(profiles, arguments, config, ignore_config=True, ignore_default=True)
logger.info('Using role_arn from the CLI')
role_duration = arguments.role_duration or int(config.get('role-duration', 0))
session_name = arguments.session_name or 'awsume-cli-role'
logger.debug('Session name: {}'.format(session_name))
if not arguments.source_profile:
logger.debug('Using current credentials to assume role')
role_session = aws_lib.assume_role({}, arguments.role_arn, session_name, region=region, external_id=arguments.external_id, role_duration=role_duration)
else:
logger.debug('Using the source_profile from the cli to call assume_role')
source_profile = profiles.get(arguments.source_profile)
if not source_profile:
raise exceptions.ProfileNotFoundError(profile_name=arguments.source_profile)
source_credentials = profile_lib.profile_to_credentials(source_profile)
mfa_serial = source_profile.get('mfa_serial')
if role_duration:
logger.debug('Using custom role duration')
if mfa_serial:
def add_arguments(config: dict, parser: argparse.ArgumentParser):
logger.info('Adding arguments')
parser.add_argument('-v', '--version',
action='store_true',
dest='version',
help='Display the current version of awsume',
)
parser.add_argument('profile_name',
nargs='?',
action='store',
metavar='profile_name',
help='The target profile name',
)
parser.add_argument('-r', '--refresh',
action='store_true',
dest='force_refresh',
help='Force refresh credentials',
)
def collect_aws_profiles(config: dict, arguments: argparse.Namespace, credentials_file: str, config_file: str):
logger.info('Collecting AWS profiles')
profiles = aws_files_lib.read_aws_file(credentials_file)
config_profiles = aws_files_lib.read_aws_file(config_file)
for profile_name, profile in config_profiles.items():
short_name = profile_name.replace('profile ', '')
if short_name not in profiles:
profiles[short_name] = {}
profiles[short_name].update(profile)
logger.debug('Collected {} profiles'.format(len(profiles)))
return profiles