【发布时间】:2018-04-09 12:40:20
【问题描述】:
import boto
import boto.s3
import sys
from boto.s3.key import Key
AWS_ACCESS_KEY_ID = 'XXXXXXXXXXXXXXXXX'
AWS_SECRET_ACCESS_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXX'
bucket_name="s3 bucket_name"
conn = boto.connect_s3(AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY)
bucket=conn.get_bucket(bucket_name,validate=True,headers=None)s
testfile = "file_path"
print ('Uploading %s to Amazon S3 bucket %s' % (testfile, bucket_name))
def percent_cb(complete, total):
sys.stdout.write('.')
sys.stdout.flush()
k = Key(bucket)
k.key = 'mytestfile.csv'
k.set_contents_from_filename(testfile,
cb=percent_cb, num_cb=10)
- 这是我用来在 s3 存储桶中上传 .csv 文件的程序,如果我选择的区域是 美国东部(弗吉尼亚北部),它会以预期的方式工作 但我需要在 'US East (Ohio)' 区域下上传文件。如果我尝试这样做,我会遇到以下异常 boto.exception.S3ResponseError: S3ResponseError: 400 Bad Request。如果有人对此有解决方案,请与我分享。
【问题讨论】:
-
你需要使用
boto.s3.connect_to_region方法。可以在这个 SO 问题中找到详细信息:stackoverflow.com/questions/22454559/… -
我试过了,但它对我不起作用。如果有任何参考。与我分享。
-
你能分享你试过的代码和你收到的错误吗?
-
我点击了您与我分享的链接,它以预期的方式工作。代码在这里非常感谢
标签: python-3.x amazon-web-services amazon-s3 iot