概要
Python の boto というライブラリを使ってニフティクラウドストレージにファイルをアップロードしてみました
boto は AWS 上のリソースにアクセスするための便利ライブラリで基本的には AWS を操作するために使いますが、AWS 互換の API があればエンドポイント変えて操作することも可能です
環境
- Python 2.7.9
- pip 7.1.2
- boto 2.39.0
boto ライブラリのインストール
- sudo pip install boto
サンプルスクリプトの作成
boto を使ってファイルをクラウドストレージにアップロードするサンプルスクリプトは以下の通りです
- boto_ncss_sample.py
import sys
import boto
from boto.s3.key import Key
accesskey= 'Please input your accesskey'
secretkey = 'Please input your secretkey'
endpoint = 'ncss.nifty.com'
def main(argv):
if len(argv) < 2:
print("Usage: %s <bucket>" % (argv[0],))
return 1
# クラウドストレージに接続します
conn = boto.connect_s3(
aws_access_key_id=accesskey,
aws_secret_access_key=secretkey,
host=endpoint,)
bucket_name = argv[1]
# 引数に指定されたバケットを操作するためのオブジェクトを生成します
bucket = conn.get_bucket(bucket_name, validate=False)
# 引数に指定されたバケットにファイルをアップロードします
f = Key(bucket)
f.key = 'test'
f.set_contents_from_filename('test')
# 引数に指定されたバケットを作成します
# conn.create_bucket(bucket_name)
# バケットの一覧を表示します
# cs = conn.get_all_buckets()
# for b in cs:
# print b.name
if __name__ == '__main__':
sys.exit(main(sys.argv))
実行は
- python boto_ncss_sample.py bucket001
という感じに実行します
引数の 1 つ目にファイルをアップロードする対象のバケットを指定します
まずコントロールパネルで取得できるアクセスキーとシークレットキーを記載してください
endpoint にニフティクラウド用のエンドポイントを指定します
boto.connect_s3
で指定されたパラメータを元に接続を開始します
conn.get_bucket
で操作するバケットのオブジェクトを生成します
引数の 2 つ目に validate=False
を指定しています
これを指定しないと「boto.exception.S3ResponseError: S3ResponseError: 405 Method Not Allowed」というエラーが発生し先に進めません
あとはアップロードするファイル名を指定して Key
オブジェクトを作成し f.set_contents_from_filename('test')
でアップロードします
成功するとバケット配下にファイルが存在すると思うので確認してみてください
コメントアウトしている部分はおまけです
最後に
boto でニフティクラウドストレージにファイルをアップロードしてみました
他の操作 ( オブジェクト削除、取得、ACL 設定 等 ) もおそらく問題なくできるはずです
リージョンを変更したい場合は endpoint に指定した URL を変更してください
- e.g) endpoint = west-1-ncss.nifty.com
0 件のコメント:
コメントを投稿