import os
import logging
from botocore.exceptions import ProfileNotFound
from botocore.credentials import JSONFileCache
LOG = logging.getLogger(__name__)
CACHE_DIR = os.path.expanduser(os.path.join('~', '.aws', 'cli', 'cache'))
def register_assume_role_provider(event_handlers):
event_handlers.register('session-initialized',
inject_assume_role_provider_cache,
unique_id='inject_assume_role_cred_provider_cache')
def inject_assume_role_provider_cache(session, **kwargs):
try:
cred_chain = session.get_component('credential_provider')
except ProfileNotFound:
LOG.debug("ProfileNotFound caught when trying to inject "
"assume-role cred provider cache. Not configuring "
"JSONFileCache for assume-role.")
return
assume_role_provider = cred_chain.get_provider('assume-role')
assume_role_provider.cache = JSONFileCache(CACHE_DIR)
web_identity_provider = cred_chain.get_provider(
'assume-role-with-web-identity'
)
web_identity_provider.cache = JSONFileCache(CACHE_DIR)