2015-03-04 2 views
2

У меня есть aws_access_key_id ии , хранящиеся в ~/.boto, и задавались вопросом, есть ли способ получить эти значения в моем коде на Python с помощью Boto, поскольку мне нужно вставить их в мой оператор SQL, чтобы скопировать CSV-файл из S3 ,Boto: Динамически получить aws_access_key_id и aws_secret_access_key в коде Python из config?

ответ

2

Это должно работать:

import boto 
access_key = boto.config.get_value('Credentials', 'aws_access_key_id') 
secret_key = boto.config.get_value('Credentials', 'aws_secret_access_key') 
+1

это не сработает! –

+0

Я думаю, что, возможно, для Boto 2, это выглядит только в '~/.boto', а не в' ~/.aws/credentials' –

0

Вот помощник, который будет выглядеть в ~/.aws/credentials если boto.config не работает. Я не смотрел в нее очень подробно, но похоже, что Boto 2 не выглядит в ~/.aws/credentials.

def get_aws_credentials(): 
    # I think this will look in ~/.boto ([Credentials] section) 
    aws_access_key_id = boto.config.get_value("Credentials", 'aws_access_key_id') 
    aws_secret_access_key = boto.config.get_value("Credentials", 'aws_secret_access_key') 

    # I don't think Boto 2 looks in ~/.aws/credentials, so we look 
    if aws_access_key_id is None or aws_secret_access_key is None: 
     with open(os.path.expanduser("~/.aws/credentials")) as f: 
      for line in f: 
       try: 
        key, val = line.strip().split('=') 
        if key == 'aws_access_key_id': 
         aws_access_key_id = val 
        elif key == 'aws_secret_access_key': 
         aws_secret_access_key = val 
       except ValueError: 
        pass 
     return aws_access_key_id, aws_secret_access_key 
Смежные вопросы