Рекомендуемый способ управления учетными данными с несколькими учетными записями AWS?

Как лучше всего управлять несколькими учетными записями Amazon Web Services (AWS )через boto?

Я знаком с файлами BotoConfig , которые использую. Но каждый файл описывает только одну учетную запись... и я работаю не только с одной организацией. По всем обычным юридическим, финансовым причинам и соображениям безопасности эти учетные записи не могут быть объединены.

В настоящее время я использую один файл конфигурации botoдля каждой учетной записи. Например.:

  • ~/.botoучетная запись по умолчанию
  • ~/.boto_clowncollegeдля аккаунта "clowncollege"
  • ~/.boto_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'))

Хороший, плохой или равнодушный? Предлагаемые улучшения?

30
задан Jonathan Eunice 2 July 2012 в 02:12
поделиться