我正在尝试使用boto从EMR上传一个~46Gb文件的大文件到S3。 我写的代码是
>>> import math, os
>>> import boto
>>> from filechunkio import FileChunkIO
# Connect to S3
>>> c = boto.connect_s3()
>>> b = c.get_bucket('mybucket')
这给我带来了错误:
UnboundLocalError: local variable 'region_name' referenced before assignment
您可以在以下链接中找到相同错误的整个堆栈:
https://github.com/boto/boto/issues/2624
有人可以告诉我这个问题有什么问题吗?
答案 0 :(得分:0)
我使用boto.s3.connection.S3Connection
,效果很好。
这是我的代码,可能对您有所帮助:
import os
from boto.s3.connection import S3Connection
from contextlib import contextmanager
@contextmanager
def connect_to_s3(access_key=ACCESS_KEY, secret_key=SECRET_KEY,
use_sigv4=False):
kwargs = {
'aws_access_key_id': access_key,
'aws_secret_access_key': secret_key
}
if use_sigv4:
os.environ['S3_USE_SIGV4'] = 'True'
kwargs['host'] = 's3.amazonaws.com'
else:
os.environ['S3_USE_SIGV4'] = ''
conn = S3Connection(**kwargs)
try:
yield conn
finally:
conn.close()
我正在使用boto==2.40.0