两个关于Python Boto上传Amazon S3的问题

4

我目前正在使用这段代码:

#!/usr/bin/env python

import boto
import boto.s3
from boto.s3.key import Key

AWS_ACCESS_KEY_ID = ''
AWS_SECRET_ACCESS_KEY = ''

filename = 'test.zip'    
bucket_name = AWS_ACCESS_KEY_ID.lower() + '-mah-bucket'
conn = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)

bucket = conn.create_bucket(bucket_name, location=boto.s3.connection.Location.DEFAULT)

k = Key(bucket)
k.key = 'my test file'
k.set_contents_from_filename(filename)

我有两个问题。首先,我相信这段代码创建了一个bucket并上传文件。问题是我不想创建新的bucket,因为我已经有一个可用。那么我只需更改代码如下:

k = Key(bucket_name)

并且摆脱这个:
bucket = conn.create_bucket(bucket_name, location=boto.s3.connection.Location.DEFAULT)
1个回答

4
实际上,不要使用conn.create_bucket(...),只需执行以下操作:
bucket = conn.get_bucket(bucket_name)
k = Key(bucket)

此外,我应该指出,按照 AWS_ACCESS_KEY_ID 命名您的存储桶似乎对我来说有些愚蠢,因为这并不是必需的。

感谢您的反馈。我已经采纳了您的建议并创建了这个链接:https://gist.github.com/4114960 。这是您想要的吗? - Jimmy
1
由于存储桶名称空间是全局的,因此在存储桶名称中使用您的访问密钥作为一部分确实有助于确保名称是唯一的,因此这不是一个可怕的想法,但它会使存储桶名称变得丑陋。 - garnaat
1
@user1738522,是的,那基本上看起来是正确的(当然,除了空白的访问密钥和秘钥)。 - Hexar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接