我下载了AWS cli,并且能够成功列出bucket中的对象。但是在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')
命令行是——>
aws s3api get-object --bucket testbucket --key test.py my.py
是否可以使用来自Amazon的最新Python SDK (Boto 3)?如果是这样,按照下面的方法设置你的证书:Boto 3快速入门。
还可以检查环境变量。如果它们不存在,也没关系。如果它们与你账户上的不匹配,那么这可能是一个问题,因为一些AWS sdk和其他工具在配置文件上使用环境变量。
* nix:echo $AWS_ACCESS_KEY_ID && echo $AWS_SECRET_ACCESS_KEY
窗口:echo %AWS_ACCESS_KEY% & echo %AWS_SECRET_ACCESS_KEY%
(对不起,如果我的windows-foo是弱)
当你默认使用CLI时,它从。aws/凭据文件中获取凭据,但要运行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(),
)