我正在尝试从我的某个Amazon s3存储桶下载文件到Ubuntu EC2实例。我在两个不同的区域创建了两个存储桶,我可以从一个区域的存储桶访问和下载文件但是当我尝试访问时另一个我正面临一个问题。
Here is the error,
Traceback (most recent call last):
File "listbucket.py", line 7, in <module>
bucket = conn.get_bucket('train-faces')
File "/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py", line 509, in get_bucket
return self.head_bucket(bucket_name, headers=headers)
File "/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py", line 556, in head_bucket
response.status, response.reason, body)
boto.exception.S3ResponseError: S3ResponseError: 400 Bad Request
但是我可以从其他地区的桶中下载文件。
答案 0 :(得分:1)
您可以在与Amazon S3连接时指定区域。
<强>博托强>
import boto
conn = boto.s3.connect_to_region('ap-southeast-2')
conn.get_bucket('train-faces')
<强> boto3 强>
目前,建议您使用boto3:
import boto3
s3 = boto3.resource('s3', region_name = 'ap-southeast-2')
bucket = s3.Bucket('train-faces')
或
import boto3
client = boto3.client('s3', region_name = 'ap-southeast-2')
答案 1 :(得分:0)
您可以使用以下命令下载
import boto3
s3 = boto3.client('s3','region_name')
s3.download_file("bucket-name", "key-name", "tmp.txt")
请参阅http://boto3.readthedocs.io/en/latest/guide/s3.html
说明 - 我们首先连接到特定区域的s3。从一个Bucket获取文件的原因可能是您在配置boto时设置的值。最好在建立连接时提供region_name。 另一个原因可能是文件无法访问或权限被拒绝。如果以后是问题,那么你应该是同样的错误,说明权限被拒绝