【问题标题】:BOTO throwing UnboundLocalError while doing get_bucketBOTO 在执行 get_bucket 时抛出 UnboundLocalError
【发布时间】:2017-01-01 19:40:57
【问题描述】:

我正在尝试使用 boto 将 ~46Gb 文件的大文件从 EMR 上传到 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

谁能告诉我这个问题的解决方法是什么?

【问题讨论】:

  • 哪一行报错了?您的凭据可能存在问题 - 在 try 块中缩进 boto 方法并打印任何异常消息。
  • b = c.get_bucket('mybucket') 抛出错误。我还没有交出证件。我正在访问的存储桶是公共存储桶。

标签: python amazon-web-services amazon-ec2 boto emr


【解决方案1】:

我正在使用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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 2016-11-09
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多