やりたいこと
ローカルストレージにあるデータをサクッとオブジェクトストレージにバックアップ取りたい。
そして、もしローカルのデータを間違えて消したり、消えてしまったときにはICOSのデータを使ってリストアしたい。
IBM Cloud Object Storage(ICOS)とは?
IBM Cloud上で提供しているオブジェクトストレージです。
AWSのs3互換のためs3 cliやs3fsなどが使えます。
サービス内容や料金に関しては、以下サイトを確認ください。
https://console.bluemix.net/catalog/services/cloud-object-storage
https://www.ibm.com/cloud-computing/jp-ja/products/storage/object-storage/
今回の流れと前提条件
- IBM CloudにログインしてIBM Cloud Object Storageを作成
- アクセスするための資格情報の発行 <ここが一番ハマるとこ
- awscliでアクセス
- バックアップ
- リストア
- まとめ
- お片付け
- 前提条件
- IBM Cloudのアカウントがあること
- awscliが入ってること
1. IBM CloudにログインしてIBM Cloud Object Storageを作成
- IBM Cloudにログインします
- カタログ>ストレージ>オブジェクトストレージの順に選択しサービスの詳細画面を開きます。
- サービス名はそのままでOKで、価格プランから無料のライトプランを選択し作成します
2. アクセスするための資格情報の発行
- 作成が完了すると、ICOSの画面が表示されるので、左のメニューからサービス資格情報を選択
- 新規資格情報をクリック
- **重要!**インラインの構成パラメーターの追加に
{"HMAC":true}
と入力する - 追加を行う
- access_key_id と secret_access_key をメモします。
※3で行ったパラメーター追加を行わないとこのIDとKeyは表示されません!
3. awscliでアクセス。
1.aws configure を実行し先程メモしたIDとKEY、あと利用するICOSのリージョンを設定します
- 今回はUSリージョンを利用します。
- その他のリージョンに関してはこちらを確認ください。
$ aws configure
AWS Access Key ID []: ****************
AWS Secret Access Key []: ****************
Default region name []: us-standard
Default output format []: json
2.AWSCLIのエンドポイントの設定
- 毎回打つのが面倒なので、今回は環境変数に設定しています。
- USリージョン以外のエンドポイントはこちらを確認ください。
$ export S3_ENDPOINT=https://s3-api.us-geo.objectstorage.softlayer.net
3.接続確認
まだbucketを作成していないので、空行が帰ってくると思いますが、エラーにならなければOKです
$ aws s3 ls --endpoint-url ${S3_ENDPOINT}
4.ICOSにbucketを作成し、確認
重要! bucket名はICOSのURLになるため他のユーザー含め一意になる名前を設定してください。
$ aws s3 mb s3://buckup-data --endpoint-url ${S3_ENDPOINT}
make_bucket: buckup-data
$ aws s3 ls --endpoint-url ${S3_ENDPOINT}
2018-09-06 16:19:39 buckup-data
4. バックアップ
バックアップ・リストアに利用するのはs3 sync コマンドです。
ソースとターゲットを指定することで、バックアップにも、リストアにも使えてます。
また、特定の拡張子のものだけsyncしたり、不要な重たいファイルを除外したりもできます。
aws s3 sync <SOURCE> <TARGET>
今回は、以下のフォルダを使ってバックアップ、リストアします
data
├── db.dump
└── visual-recognition
└── TrainingImages
├── hdmi_male.zip
├── thunderbolt_male.zip
├── usb_male.zip
└── vga_male.zip
1.バックアップの実行
$ aws s3 sync data s3://buckup-data/ --endpoint-url ${S3_ENDPOINT}
upload: data/.DS_Store to s3://buckup-data/.DS_Store
upload: data/visual-recognition/TrainingImages/hdmi_male.zip to s3://buckup-data/visual-recognition/TrainingImages/hdmi_male.zip
upload: data/visual-recognition/TrainingImages/usb_male.zip to s3://buckup-data/visual-recognition/TrainingImages/usb_male.zip
upload: data/visual-recognition/TrainingImages/thunderbolt_male.zip to s3://buckup-data/visual-recognition/TrainingImages/thunderbolt_male.zip
upload: data/visual-recognition/TrainingImages/vga_male.zip to s3://buckup-data/visual-recognition/TrainingImages/vga_male.zip
upload: data/db.dump to s3://buckup-data/db.dump
2.Upできたか確認
$ aws s3 ls s3://data-buckup/ --endpoint-url ${S3_ENDPOINT}
PRE visual-recognition/
2018-09-06 16:32:29 1270762 db.dump
$ aws s3 ls s3://buckup-data/visual-recognition/TrainingImages/ --endpoint-url ${S3_ENDPOINT}
2018-09-06 16:32:27 897022 hdmi_male.zip
2018-09-06 16:32:28 1103811 thunderbolt_male.zip
2018-09-06 16:32:28 1071072 usb_male.zip
2018-09-06 16:32:28 599661 vga_male.zip
5. リストア
Upしたデータをdata-restoreフォルダにリストアしてみます。
syncコマンドのSOURCEとTARGETを入れ替えてコマンドを実行します。
$ aws s3 sync s3://buckup-data/ data2 --endpoint-url ${S3_ENDPOINT}
download: s3://buckup-data/.DS_Store to data2/.DS_Store
download: s3://buckup-data/visual-recognition/TrainingImages/vga_male.zip to data2/visual-recognition/TrainingImages/vga_male.zip
download: s3://buckup-data/visual-recognition/TrainingImages/hdmi_male.zip to data2/visual-recognition/TrainingImages/hdmi_male.zip
download: s3://buckup-data/db.dump to data2/db.dump
download: s3://buckup-data/visual-recognition/TrainingImages/thunderbolt_male.zip to data2/visual-recognition/TrainingImages/thunderbolt_male.zip
download: s3://buckup-data/visual-recognition/TrainingImages/usb_male.zip to data2/visual-recognition/TrainingImages/usb_male.zip
6. まとめ
かなり簡単にObjectStorageにデータをSyncできました。
一番の難関はやはり資格情報を発行する際のオプション指定!
aws s3 にIDやKEYを設定したあとは、s3コマンドを実行するだけなのでsync以外にもいろいろとできるので試してみてください
s3 — AWS CLI 1.16.8 Command Reference
https://docs.aws.amazon.com/cli/latest/reference/s3/index.html
7. お片付け
IBM Cloudのダッシュボードよりサービスの削除する。
参考情報
- IBM Cloud Object Storageを使ってみた - Qiita
https://qiita.com/satorubz/items/eba9bf9909b158a5d73c - ICOS(IBM Cloud Object Storage)のaccess_key_idとsecret_access_keyが見つからない件 - Qiita
https://qiita.com/osonoi/items/81f52f57ded3e8aac82d - IBM Cloud Docs
https://console.bluemix.net/docs/services/cloud-object-storage/about-cos.html - s3 — AWS CLI 1.16.8 Command Reference
https://docs.aws.amazon.com/cli/latest/reference/s3/index.html