Help us understand the problem. What is going on with this article?

IBM Cloud Object Storage のデータを Swift API コンテナ から S3 API バケットに移行する

More than 1 year has passed since last update.

構成

以下のような構成で、「rclone」というプログラムを使ってデータをコピーしてみます。
今回は「rclone」を使うための Linux サーバーを IBM Cloud 上に用意しました。

IBM Cloud Object Storage では、Swift と S3 に関わらず、Private Endpoint を提供しています。
Private 経由では、ネットワーク通信量に対する課金は発生しない ので、安心してください。

Kobito.KuynTq.png

Swift API と S3 API の違いは下記リンクを参照してください。

https://console.bluemix.net/catalog/infrastructure/object-storage-group

認証情報の取得

接続に使う認証情報をポータルから取得しておきましょう。

Swift API

以下の3つの情報を使います。

  • Private Endpoint
  • Username
  • API Key (Password)

Kobito.L4gLlH.png

S3 API

以下の3つの情報を使います。

  • Private Endpoint
  • Access Key ID
  • Secret Access Key

Kobito.34lupx.png
Kobito.ISm1Dr.png

Kobito.Seo6rX.png

rclone を Linux サーバーにインストール

「unzip」等がないと、「None of the supported tools for extracting zip archives (unzip 7z) were found. Please install one of them and try again.」と怒られるので、入れておきます。
「rclone」のインストール自体は、2行目のコマンドだけなので非常に簡単です。

yum install unzip -y
curl https://rclone.org/install.sh | sudo bash

https://rclone.org/install/

rclone の設定

rclone config のコマンドで設定ファイルを生成できるので、そこから適当なファイルをつくります。

設定ファイルは ~/.config/rclone.conf に保存されるので、以下の設定として書き直します。

  • 使いたいリージョンによって、適宜 Endpoint を変更します
  • S3 API の設定では、Endpointの設定に加えて「region = other-v4-signature」とします
  • S3 API の設定では、「location_constraint」のパラメータで以下の場所を指定します(https://rclone.org/s3/)
    • us-standard / us-vault / us-cold / us-flex
    • us-east-standard / us-east-vault / us-east-cold / us-east-flex
    • us-south-standard / us-south-vault / us-south-cold / us-south-flex
    • eu-standard / eu-vault / eu-cold / eu-flex
    • ap-standard / ap-vault / ap-cold / ap-flex
~/.config/rclone.conf
[SWIFT]
type = swift
env_auth = false
user = IBMxxxxxx:xxxxxx
key = xxxxxx
auth = https://tok02.objectstorage.service.networklayer.com/auth/v1.0/
user_id = 
domain = 
tenant = 
tenant_id = 
tenant_domain = 
region = 
storage_url = 
auth_token = 
endpoint_type = private

[COS-TOK-AP]
type = s3
env_auth = false
access_key_id = xxxxxx
secret_access_key = xxxxxx
region = other-v4-signature
endpoint = s3.tok-ap-geo.objectstorage.service.networklayer.com
location_constraint = ap-flex
acl = private
server_side_encryption = 
storage_class = 

設定確認

以下のコマンドで、コンテナやバケットのリストが出てくれば、問題なく設定されてることが確認できます。

rclone lsd SWIFT:
rclone lsd COS-TOK-AP:
[root@khayama-test rclone]# rclone lsd COS-TOK-AP:
          -1 2017-08-09 06:50:19        -1 apictest
          -1 2018-03-22 12:58:23        -1 khayama-test2
          -1 2018-03-28 13:09:53        -1 khayama-test3

ドライラン

以下のコマンドで、どのファイルがコピーされる対象となっているか、確認できます。
コピー先となる S3 API 側のバケットを新規に作る場合は、バケット名が全ユーザーの中で一意である必要ありますので、注意します。

rclone --dry-run copy SWIFT:khayama COS-TOK-AP:khayama-test4
[root@khayama-test rclone]# rclone --dry-run copy SWIFT:khayama COS-TOK-AP:khayama-test4
2018/04/03 03:49:58 NOTICE: vyatta-vrouter-5.2R5S3_B_amd64.iso: Not copying as --dry-run

オブジェクトストレージ間のコピー

以下のコマンドで実施できます。

rclone -v copy SWIFT:khayama COS-TOK-AP:khayama-test4

100 Mbps の Linux サーバーで実行した場合、これくらいの速度感でした。

[root@khayama-test rclone]# rclone -v copy SWIFT:khayama COS-TOK-AP:khayama-test4
2018/04/03 04:09:49 INFO  : S3 bucket khayama-test4: Modify window is 1ns
2018/04/03 04:09:50 INFO  : S3 bucket khayama-test4: Waiting for checks to finish
2018/04/03 04:09:50 INFO  : S3 bucket khayama-test4: Waiting for transfers to finish
2018/04/03 04:10:26 INFO  : vyatta-vrouter-5.2R5S3_B_amd64.iso: Copied (new)
2018/04/03 04:10:26 INFO  : 
Transferred:   335 MBytes (9.108 MBytes/s)
Errors:                 0
Checks:                 0
Transferred:            1
Elapsed time:       36.7s

このコマンドでは、ファイルはコピーされるだけで、削除はされません。

Kobito.M3OwGE.png

ターゲット側の S3 API の設定で「location_constraint」のパラメータを「ap-standard / ap-vault / ap-cold / ap-flex」の中で変えてみると、反映されていることがわかります。

Kobito.iCI0a7.png

さいごに

「rclone」は「rsync」のようなコマンドが使え、たとえばオブジェクトストレージ間のデータ同期、ローカルPC-オブジェクトストレージ間のデータ同期にも有効です。
ぜひ使ってみてください。

khayama
このサイトにおける掲載内容はあくまで私自身の見解であり、必ずしも私の所属団体・企業における立場、戦略、意見を代表するものではありません。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした