2008-10-14 22:42:06
Pythonを使って、Amazon S3のデータを読み出す、あるいは保存する方法を調べてみた。あまり迷うことなく、botoを使うことにした。傀儡師の館.Pythonの記事を参考にしながら。
ダウンロードして、展開。sudo python setup.py installでインストール。ubuntuの場合は、packageがあるから、Synapticなどを利用してインストール。
.bash_profileなどに、
export AWS_ACCESS_KEY_ID=アクセスキー export AWS_SECRET_ACCESS_KEY=秘密鍵と書いておく。ubuntuの場合は、.profileか。そうすると、いちいちスクリプトで二つのIDを書き込まなくてもいいというので。
testsフォルダに入っているtest.pyを使って確認。
python test.py -t s3 --- running S3Connection tests --- --- tests completed --- . ----------------------------------------------------------- Ran 1 test in 9.836s OKとなる。ただし、ubuntuの場合は、そのままこのテストを実行しようとしても、 ImportError: No module named tests.test_sqsconnection というエラーが出てしまうので使えない。
さて、ここからPythonで試してみることにする。まずは、pdffiles-pmidというbucketに入っている1558312.pdfというファイルをダウンロードして、1558312b.pdfというファイル名で保存するスクリプトを書いてみる。
#!/usr/bin/python # -*- coding: utf-8 -*- from boto.s3.connection import S3Connection from boto.s3.key import Key conn = S3Connection() bucket = conn.get_bucket('pdffiles-pmid') bucket.set_acl('private') if bucket.lookup('15583162.pdf') != None: k = Key(bucket) k.key = '15583162.pdf' k.get_contents_to_filename('15583162b.pdf')できた(MacOSXでもubuntuでも)。これで、何をやろうとしているのかは、また後で。少しだけ書くと、論文のPDFファイルの管理である。今日は、3000ほどあるpdfファイルをAmazon S3へとコピーした。ここを書庫として、いつでもどこからでも、論文のファイルを読み出そうという計画である。ファイル容量は合計で多分2GBくらいだと思う。