使用tinys3上传到Amazon S3

Nad*_*ine 6 python amazon-s3

我正在使用Python和tinys3将文件写入S3,但它无法正常工作.这是我的代码:

import tinys3
conn = tinys3.Connection('xxxxxxx','xxxxxxxx',tls=True)

f = open('testing_s3.txt','rb')
print conn.upload('testing_data/testing_s3.txt',f,'testing-bucket')
print conn.get('testing_data/testing_s3.txt','testing-bucket')
Run Code Online (Sandbox Code Playgroud)

这给出了输出:

<Response [301]>
<Response [301]>
Run Code Online (Sandbox Code Playgroud)

当我尝试指定端点时,我得到:

requests.exceptions.HTTPError: 403 Client Error: Forbidden
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么吗?

编辑:当我尝试使用boto时,它可以工作,因此问题不在访问密钥或密钥中.

Nad*_*ine 14

我终于想通了.这是正确的代码:

import tinys3
conn = tinys3.Connection('xxxxxxx','xxxxxxxx',tls=True,endpoint='s3-us-west-1.amazonaws.com')

f = open('testing_s3.txt','rb')
print conn.upload('testing_data/testing_s3.txt',f,'testing-bucket')
print conn.get('testing_data/testing_s3.txt','testing-bucket')
Run Code Online (Sandbox Code Playgroud)

您必须使用区域端点,而不是s3.amazonaws.com.您可以从此处查找区域端点:http://docs.aws.amazon.com/general/latest/gr/rande.html.查看标题"Amazon Simple Storage Service(S3)".

我从这个帖子中得到了这个想法:https://github.com/smore-inc/tinys3/issues/5

  • 也为我工作过. (2认同)
  • @Dex'ter密钥是AWS访问密钥.您可以在AWS IAM管理区域中创建它. (2认同)