1
0

More than 3 years have passed since last update.

IBM Cloud Object Storage(ICOS)に付属しているAsperaにSDK(Python版)を用いてファイルアップロードする

Last updated at Posted at 2020-03-20

IBM Cloud Object Storage(ICOS)にファイルをアップロードする方法です。
今回はICOSに付属しているAsperaに対して、Python版のSDKを用いて操作を行います。

使用した環境

  • macOS Mojave 10.14.6、Python2.7.10
  • Windows7 Ultimate、Python2.7.16

3系でも良いのですが、現状SDKが3.6までしかサポートしていないので2系でチェックしました。

Python版SDKのセットアップ

こちらを参考にセットアップ下さい。
GitHub:IBM-Cloud/data-lake/upload/cos-upload

pipのセットアップの後に、install.shを実行しますが、
Windows版については、私はファイルの中身を直接コピーして、コマンドを実行しました。

install.sh
pip install --upgrade pip
pip install --upgrade setuptools
pip install "requests>=2.22.0,<2.23.0" "ibm-cos-sdk>=2.5.4" "cos-aspera>=0.1.163682"

ICOSの情報確認

IBM Cloud コンソール(Web)にログインしてICOSのサービス資格情報を確認します。
サービス資格情報はICOSに作成したバケットの資格情報の中にあります。
service_info.png

実行

コマンド例は以下の通りです。

cos-upload.py <endpoint> <apikey> <bucket_name> <prefix> <file>

Macでの実行

$ python cos-upload.py s3.jp-tok.cloud-object-storage.appdomain.cloud "api-key" test-bucket "" test-upload-python-mac.txt

Initialize COS and Aspera Transfer Manager using endpoint: https://s3.jp-tok.cloud-object-storage.appdomain.cloud

Upload file to COS: /tmp/test-upload-python-mac.txt => test-upload-python-mac.txt
Upload file to COS completed.

Windowsでの実行

C:\tmp>py -2 D:\Workspace\cos-upload.py s3.jp-tok.cloud-object-storage.appdomain.cloud "api-key" test-bucket "" test-upload-python-win.txt

Initialize COS and Aspera Transfer Manager using endpoint: https://s3.jp-tok.cloud-object-storage.appdomain.cloud

Upload file to COS: C:\tmp\test-upload-python-win.txt => test-upload-python-win.txt
Upload file to COS completed.

到着確認

正常にアップロードされたことをibmcloudコマンドにて確認します。

// 正常にアップロードされたことを確認
$ ibmcloud cos list-objects --bucket test-bucket
OK
見つかりました 3 バケットにオブジェクトがあります 'test-bucket':

名前        最終変更日時               オブジェクト・サイズ
test.txt    Feb 28, 2020 at 02:27:12   14 B
test-upload-python-mac.txt   Mar 05, 2020 at 20:05:11   20 B
test-upload-python-win.txt   Mar 05, 2020 at 21:21:50   20 B

あとがき

Python版のポイントは"実行環境の構築"と"実行時のパラメータ指定の概念理解"かと思います。

私はしばらくRequireに気が付かずに3.7系で実行していましたので、なかなかinstall.shがうまくいかずに困っていましたが、2.7系で実施したらものの見事に解決したので、時間をロスした!と感じました。
また、PythonをWindowsで動かすこともあまり無いかと思いますが、せっかくなのでチャレンジしてみたところ、うまくいったのでついでに載せた次第です。

実行時のパラメータの <prefix><file> は曲者で、やってみると分かるのですが、当初は意図した通りにファイルがアップロードされず、少々理解に苦しみました。
例えば <file> にフルパスを指定すると、

/tmp/upload/test.txt   Mar 03, 2020 at 21:21:50   20 B

みたいにパス名も付いたファイルがアップロードされます。
ですので、送りたいファイルのディレクトリまで移動し、そこから cos-upload.py をCallする形でやるのが小細工しなくて良いので、やり易いのではないかな?と思います。

参考リンク

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0