2015-12-17 75 views
0

的Python的Boto S3Connection问题尝试下面的代码连接到AWS S3和使用代理,并收到以下错误推一个文件,通过代理

代码:

local_proxy =“http://172.18.96.36 local_proxy_port = 8080 aws_connection = S3Connection(aws_access_key_id = AWS_KEY,aws_secret_access_key = AWS_SECRET,is_secure =真,security_token = AWS_TOKEN,代理= “172.18.96.36”,proxy_port使用= “8080”,proxy_user =无,proxy_pass =无)

mybucket = aws_connection。得到_bucket(BUCKET_NAME,验证=假)

K = boto.s3.key.Key(mybucket) k.set_contents_from_filename(SOURCE_FILE,encrypt_key =真)

错误:所需要的字节状物体,而不是' STR”

当我改变代理‘http://172.18.96.36’,我得到以下错误,

errno的-2名称或服务不知道

注:代理服务器工作正常,当我尝试它直通AWS CLI 。那里没有问题。另外,boto脚本在防火墙外工作良好。想要查看S3Connection呼叫或其他任何地方的错误。

谢谢

回答

0

看看这个。 https://github.com/lcerezo/scriptz/blob/master/SAtools/pushfiles_toS3.py

你想要的是沿thses线成才:

conn = boto.connect_s3(proxy='172.18.96.36',proxy_port='3128',debug=1)

上述作品我鱿鱼。更改端口。我不认为你需要该字符串中的http://

+0

Thx lcerezo。端口3128挂起而没有回来。顺便说一下,Port 8080可以通过AWS CLI正常工作。任何想法为什么我得到错误“字节状对象是必需的,而不是'str'”?这将有所帮助。 –

+0

另外,我正在使用python 3.5与常规boto模块。这会成为一个问题吗? Shd我使用Python 2.7? –

+0

我认为ip不应该以http://作为前缀,它可能会将其解释为str()。 或者你可以设置bash env var'http_proxy'和'https_proxy'到ip:port例如'export http_proxy = 172.18.96.36:8080' – lcerezo