AWS Python脚本与AWS CLI

时间:2015-08-25 23:38:37

标签: amazon-web-services aws-cli

我下载了aws cli,并且能够从我的存储桶中成功列出对象。但是从python脚本做同样的事情是行不通的。该错误是禁止的错误。 我应该如何配置boto以使用相同的默认aws凭证(由aws cli使用) 谢谢

import logging import urllib, subprocess, boto, boto.utils, boto.s3

logger = logging.getLogger("test") formatter =
logging.Formatter('%(asctime)s %(message)s') file_handler =
logging.FileHandler("test.log") file_handler.setFormatter(formatter)
stream_handler = logging.StreamHandler(sys.stderr)
logger.addHandler(file_handler) logger.addHandler(stream_handler)
logger.setLevel(logging.INFO)

# wait until user data is available while True:
logger.info('**************************** Test starts *******************************')
userData = boto.utils.get_instance_userdata()
if userData:
    break
time.sleep(5)

bucketName = '' 
deploymentDomainName = ''

if bucketName:
    from boto.s3.key import Key
    s3Conn = boto.connect_s3('us-east-1')
    logger.info(s3Conn)
    bucket = s3Conn.get_bucket('testbucket')
    key.key = 'test.py'
    key.get_contents_to_filename('test.py')

CLI是 - >

aws s3api get-object --bucket testbucket --key test.py my.py

2 个答案:

答案 0 :(得分:3)

是否可以使用亚马逊最新的Python SDK(Boto 3)?如果是,请按照此处所述设置您的凭据:Boto 3 Quickstart

另外,您可以检查环境变量。如果它们不存在,那就没关系。如果它们与您帐户中的内容不匹配,那么这可能是一些AWS SDK和其他工具在配置文件中使用环境变量的问题。

* nix中: echo $AWS_ACCESS_KEY_ID && echo $AWS_SECRET_ACCESS_KEY

视窗: echo %AWS_ACCESS_KEY% & echo %AWS_SECRET_ACCESS_KEY%

(对不起,如果我的windows-foo很弱)

答案 1 :(得分:1)

默认情况下使用CLI时,它会从.aws / credentials文件获取凭据,但是对于运行bot,您必须在python脚本中指定访问密钥和密钥。

import boto
import boto.s3.connection
access_key = 'put your access key here!'
secret_key = 'put your secret key here!'

   conn = boto.connect_s3(
        aws_access_key_id = access_key,
        aws_secret_access_key = secret_key,
        host = 'bucketname.s3.amazonaws.com',
        #is_secure=False,               # uncomment if you are not using ssl
        calling_format = boto.s3.connection.OrdinaryCallingFormat(),
        )