私は現在このコードを使っています:
#!/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)
2つ質問があります。 まず、このコードはアップロードだけでなくバケットも作成します。私はすでにバケツを作っているので、バケツを作成したくないのです。これをするためには、単にこれを次のように変更します。
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に基づいてバケットに名前を付けることは、本当に必要ではないので、私には馬鹿げているように思えるかもしれません。