1. ホーム
  2. python

[解決済み] botoを使ってS3バケットのディレクトリにファイルをアップロードする方法

2022-06-19 11:10:06

質問

pythonを使ってS3バケットにあるファイルをコピーしたいのですが、どうすればよいですか?

例:バケット名testとします。そのバケツの中に、"dump" & "input" という2つのフォルダがあります。今、私はパイソンを使用して、ローカルディレクトリからS3の"dump"フォルダにファイルをコピーしたいのですが...。誰か私を助けることができますか?

どのように解決するのですか?

これを試してみてください...

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

AWS_ACCESS_KEY_ID = ''
AWS_SECRET_ACCESS_KEY = ''

bucket_name = AWS_ACCESS_KEY_ID.lower() + '-dump'
conn = boto.connect_s3(AWS_ACCESS_KEY_ID,
        AWS_SECRET_ACCESS_KEY)


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

testfile = "replace this with an actual filename"
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 = 'my test file'
k.set_contents_from_filename(testfile,
    cb=percent_cb, num_cb=10)

[UPDATE]です。 私はpythonistではないので、import文についてご指摘いただきありがとうございます。 また、自分のソースコード内にクレデンシャルを配置することはお勧めしません。もしこれをAWS内で実行するのであれば、IAM Credentials with Instance Profiles ( http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html ) を使用し、開発/テスト環境で同じ挙動を維持するには、AdRoll の Hologram のようなもの ( https://github.com/AdRoll/hologram )