Каков наилучший способ управления несколькими учетными записями Amazon Web Services (AWS) через boto
?
Я знаком с BotoConfig файлами, которые я использую. Но каждый файл описывает только одну учетную запись... и я работаю не только с одной организацией. По всем обычным юридическим, финансовым и соображениям безопасности эти счета нельзя смешивать.
В настоящее время я использую один файл конфигурации boto
для каждой учетной записи. Например:.
-
~/.boto
учетная запись по умолчанию -
~/.boto_clowncollege
для учетной записи "clowncollege" -
~/.boto_razorassoc
для учетной записи "razorassoc" -
~/.boto_xyz
для учетной записи "xyz"
Затем что-то вроде:
def boto_config_path(account=None):
"""
Given an account name, return the path to the corresponding boto
configuration file. If no account given, return the default config file.
"""
path = '~/.boto' + ('_' + account if account else '')
clean_path = os.path.abspath(os.path.expanduser(path))
if os.path.isfile(clean_path):
return clean_path
else:
errmsg = "cannot find boto config file {} for {}".format(clean_path, account)
raise ValueError(errmsg)
def aws_credentials(account=None):
"""
Return a tuple of AWS credentials (access key id and secret access key) for
the given account.
"""
try:
cfg = INIConfig(open(boto_config_path(account)))
return ( cfg.Credentials.aws_access_key_id, cfg.Credentials.aws_secret_access_key )
except Exception:
raise
conn = EC2Connection(*aws_credentials('razorassoc'))
Хорошо, плохо или безразлично? Предлагаемые улучшения?