0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

rcloneを利用してAkamai NetStorageからLinode Object Storageにコンテンツをコピーする

Last updated at Posted at 2022-09-26

Akamai Cloud Computing Services(旧Linode)とは

Akamai Cloud Computing Services(旧Linode) (https://www.linode.com/) は Akamaiが提供するIaaS (Infrastructure as a Service) プラットフォームプロバイダーのサービスです。
Akamaiは2022年2月にLinode社の買収を発表しました。

Akamai、Linode の買収を発表

クラウドコンピューティングをよりシンプルに、手頃な価格で、誰もが利用できるようにすることで、イノベーションを加速することができます。

Linode Object Storageとは

image.png

Linode Object Storageは様々なリージョンで利用可能なS3互換の低価格なAkamai Cloud Computing Serviceのストレージソリューションです。
ストレージはNVMe SSDにて動作しており、HDDに比べて高いパフォーマンスと低レイテンシーなアクセスを実現することができます。
データ量は250GBから100TB(※1)まで拡張することができ、オブジェクトはリージョン内でレプリケートされており冗長性が担保されています。
インバウンド転送無料、アウトバウンド1TBまでの転送が標準の価格に含まれており、追加の転送料金は1GBあたり0.005ドルとかなり低コストなのが特徴です(※1)。
今後のアップデートではデータ量が最大1PB、オブジェクト数は最大10億に対応する予定があります。

※1 リージョンによって制限や価格が異なります、詳しくはこちらを参照ください。

Rclone とは

Rcloneは、オープンソースのコマンドラインベースのツールで、多様なクラウドストレージサービスの管理と操作を行うことができます。GitHubでコードが公開されており、コミュニティによる改善とRclone Services Ltdによるサポートも行われています。このツールは、Google Drive、Amazon S3、Dropboxなど、幅広いクラウドサービスとの互換性を持ち、ファイルの同期、アップロード、ダウンロードなどがコマンドラインを通じて簡単に行えるのが特徴です。

rcloneを利用してAkamai NetStorageからLinode Object Storageにコンテンツをコピーする

今回は、rcloneを利用してAkamai NetStorageからLinode Object Storageへコンテンツをコピーする方法を紹介します。

サーバーの用意

NetStorageからObject Storageにコンテンツをコピーするために、rcloneが動作するサーバーを用意します。
本検証ではLinodeの共有CPUプランの8GBメモリのサーバーを選択しています。

image.png

アクセスキーの用意

Akamai NetStorageとLinode Object Storageにrcloneが接続するためのアクセスキーを用意します。

Akamai NetStorage

rcloneがNetStorageに接続するためには、Netstorage HTTP CMS APIのKeyが必要です。
対象のStorage Groupに紐づくUpload AccountからHTTP API Keyを発行します。

メニューの遷移
NetStorage → Upload Account → 対象のユーザーを選択 → Edit → Access Methods → HTTP CMS API

image.png

Linode Object Storage

Object StorageのメニューからAPI Keyの発行が行えます。
このAPI KeyはS3互換のものとなり、アクセスキーの設定方法はS3同様に行います。

image.png

rcloneのインストール

サーバーにrcloneのインストールを行います。
コマンドが動作することをVersionの表示で確認をします。

curl https://rclone.org/install.sh | sudo bash
rclone version

※バージョンはv1.65.0以上を利用してください

rcloneのセットアップ

rclone configを利用して、Akamai NetStorageとLinode Object Storageに接続するための初期設定を行います。

rclone セットアップ (Wizardを利用しない場合)

セットアップウィザードにて設定を実施しない場合には、直接設定ファイルを以下のフォーマットで記載する必要があります。

NetStorageキー情報の暗号化
出力されたキーをコピーする。

echo "XXXXXXXXXXXXXXXXXXXXXXX" | rclone obscure -
~/.config/rclone/rclone.conf
[ns]
type = netstorage
protocol = https
host = xxxxxx-nsu.akamaihd.net/xxxxxx/
account = [アカウント名]
secret = [暗号化されたキー]

[linode]
type = s3
provider = Linode
access_key_id = [Key ID]
secret_access_key = [Access Key]
region = [region-id]
endpoint = [region-id].linodeobjects.com
acl = private

Akamai NetStorageのConfig作成

新規作成のため、New romoteのnを入力。

root@localhost:~# rclone config
Current remotes:

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> n

任意の接続名を入力。例ではns

Enter name for new remote.
name> ns

接続するTypeを入力する。netstorage

Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.
Storage> netstorage

NetStorageに接続するドメイン名を控えます。
rcloneで利用するのはHTTP Domain Nameとなります。

image.png

接続先のディレクトリ名を控えます。

image.png

控えた内容を入力します。 xxxxxx-nsu.akamaihd.net/<directory_name>/

Option host.
Domain+path of NetStorage host to connect to.
Format should be `<domain>/<internal folders>`
Enter a value.
host>
This value is required and it has no default.
host>
This value is required and it has no default.
host> xxxxxx-nsu.akamaihd.net/<directory_name>/

HTTP API Keyを発行したユーザー名を入力します。user_name

Option account.
Set the NetStorage account name
Enter a value.
account> user_name

HTTP API Keyを入力します。

Option secret.
Set the NetStorage account secret/G2O key for authentication.
Please choose the 'y' option to set your own password then enter your secret.
Choose an alternative below.
y) Yes, type in my own password
g) Generate random password
y/g> y
Enter the password:
password:
Confirm the password:
password:

Advanced Configは設定しないためnを入力します。

Edit advanced config?
y) Yes
n) No (default)
y/n> n

作成する設定内容が表示されます。
問題なければyを入力します。

Configuration complete.
Options:
- type: netstorage
- host: xxxxx-nsu.akamaihd.net/<directory_name>/
- account: <user_name>
- secret: *** ENCRYPTED ***
Keep this "ns" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y

一旦終了するため、qを入力します。

Current remotes:

Name                 Type
====                 ====
ns                   netstorage

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q

接続確認

ディレクトリ一覧を取得する lsd のコマンドオプションにて接続確認をします。
※ディレクトリーが存在しない場合は表示されません。

rclone lsd ns:

Linode Object StorageのConfig作成

新規作成のため、New romoteのnを入力。

root@localhost:~# rclone config
Current remotes:

Name                 Type
====                 ====
ns                   netstorage

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> n

任意の接続名を入力。例ではlinode

Enter name for new remote.
name> linode

接続するTypeを入力する。s3

Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.
Storage> s3

接続するProviderを入力する。linode

Option provider.
Choose your S3 provider.
Choose a number from below, or type in your own value.
Press Enter to leave empty.
provider> linode

Credentialsの設定が必要なため1を入力。

Option env_auth.
Get AWS credentials from runtime (environment variables or EC2/ECS meta data if no env vars).
Only applies if access_key_id and secret_access_key is blank.
Choose a number from below, or type in your own boolean value (true or false).
Press Enter for the default (false).
 1 / Enter AWS credentials in the next step.
   \ (false)
 2 / Get AWS credentials from the environment (env vars or IAM).
   \ (true)
env_auth> 1

Linode Object Storageにて発行したAccess Keyを入力。

Option access_key_id.
AWS Access Key ID.
Leave blank for anonymous access or runtime credentials.
Enter a value. Press Enter to leave empty.
access_key_id>  XXXXXXXXXXXXXXXX

Linode Object Storageにて発行したSecret Keyを入力。

Option secret_access_key.
AWS Secret Access Key (password).
Leave blank for anonymous access or runtime credentials.
Enter a value. Press Enter to leave empty.
secret_access_key> XXXXXXXXXXXXXXXXXXXXX

Linode Object Storageのコピー先となるRegion-idを入力します。
今回は大阪リージョンを利用するため、jp-osa-1と入力。

各リージョンのCluster IDはこちらから確認できます。

Option region.
Region to connect to.
Leave blank if you are using an S3 clone and you don't have a region.
Choose a number from below, or type in your own value.
Press Enter to leave empty.
   / Use this if unsure.
 1 | Will use v4 signatures and an empty region.
   \ ()
   / Use this only if v4 signatures don't work.
 2 | E.g. pre Jewel/v10 CEPH.
   \ (other-v2-signature)
region> jp-osa-1

接続先のエンドポイントを入力する。
今回はシンガポールリージョンを利用するため、jp-osa-1.linodeobjects.comと入力する。

Option endpoint.
Endpoint for S3 API.
Leave blank if using AWS to use the default endpoint for the region.
Enter a value. Press Enter to leave empty.
endpoint> jp-osa-1.linodeobjects.com

利用するシンガポールリージョンのjp-osa-1を入力する。

Option location_constraint.
Location constraint - must be set to match the Region.
Used when creating buckets only.
Choose a number from below, or type in your own value.
Press Enter to leave empty.
location_constraint> jp-osa-1

コンテンツは公開する予定はないため、ACLはprivateと入力する。

Option acl.
Canned ACL used when creating buckets and storing or copying objects.
This ACL is used for creating objects and if bucket_acl isn't set, for creating buckets too.
For more info visit https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl
Note that this ACL is applied when server-side copying objects as S3
doesn't copy the ACL from the source but rather writes a fresh one.
Choose a number from below, or type in your own value.
Press Enter to leave empty.
acl> private

追加設定は必要ないのでnを入力する。

Edit advanced config?
y) Yes
n) No (default)
y/n> n

設定が問題ないことを確認して、yを入力する。

Configuration complete.
Options:
- type: s3
- provider: linode
- access_key_id: KZXVTPJRSI8R4HW4ETA9
- secret_access_key: lX6JCyx5e7G3c0ULuaae1dmo0v6eXZQzOHZWm13m
- region: jp-osa-1
- endpoint: jp-osa-1.linodeobjects.com
- location_constraint: jp-osa-1
- acl: private
Keep this "linode1" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y

設定が完了したため、qを入力して終了する。

Current remotes:

Name                 Type
====                 ====
linode               s3
ns                   netstorage

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q

接続確認

ディレクトリ一覧を取得する lsd のコマンドオプションにて接続確認をします。
※ディレクトリーが存在しない場合は表示されません。

rclone lsd linode:[bucket_name]

バケット名の記載が誤っている場合などはエラーが表示されます。

2022/09/02 10:28:39 ERROR : : error listing: directory not found
2022/09/02 10:28:39 Failed to lsd with 2 errors: last error was: directory not found

Bucket Nameはコンソールから確認が可能です。
image.png

Akamai NetStorageからLinode Object Storageへコンテンツをコピーする

今回はファイル転送のテストのため、1つ1MBのファイルを1万個用意しました。
合計で10GB分のファイル転送となります。
コピーするディレクトリ名はfilesです。

--fast-list ディレクトリ一覧を取得する際のトランザクションを小さくします
--progress ファイル転送の進捗を表示します
--transfer 並行して実行するプロセス数

root@localhost:~# rclone --fast-list --progress --transfer 50 copy ns:files linode:<bucket_name>/files
Transferred:   	    9.766 GiB / 9.766 GiB, 100%, 8.013 MiB/s, ETA 0s
Transferred:        10000 / 10000, 100%
Elapsed time:     20m19.1s

参考値

送信元 送信先 ファイル 速度 転送時間
NetStorage Linode 1File(10GB) 41.867 MiB/s(351.2 Mbps) 4m33.8s
NetStorage Linode 10,000File(1MB) 96.122 MiB/s(806.48 Mbps) 1m46.3s

ファイルの確認

Linodeのコンソールから実際に転送されていることを確認します。

image.png

まとめ

rcloneを利用することで、ストレージ間のファイル転送を実現することができました。
Linode Object StorageのデータをLinodeのコンピューティングリソースを利用してログを可視化するなど、ぜひ使ってみてください。

参考

関連記事

アカマイ・テクノロジーズ合同会社のQiitaではLinode関連など開発者向けの記事を記載しております。

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?