Aspera CLIを使ってIBM Cloud Object Storage (ICOS) へ高速転送を実現する


# はじめに

前回の記事[「Aspera Transfer SDKを使ってIBM Cloud Object Storage (ICOS) へ高速転送を実現する」](https://qiita.com/xiaojinse/items/b6700eeaccc4f1b2acad)でSDKの使い方を紹介しましたが、この記事でAspera CLIの使い方を説明させていただきます。

# Aspera CLIをInstallする

[Aspera Download](https://www.ibm.com/products/aspera/downloads)のページで**IBM Aspera CLI**のブロックをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2075462/91942e0e-df09-5ca6-9c1e-66ea7c0678dd.png)

次は**GitHub**の**IBM/aspera-cli**のRepository Pageになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2075462/88952cd5-34f8-3e0c-69e1-0a762bfe99c9.png)

画面を下にスクロールすると、Aspera CLI のInstallと使用方法を説明するREADME.mdがあります。結構長いREADMEですが、先ずは[**Installation**](https://github.com/IBM/aspera-cli#installation)の部分に行きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2075462/9a3a5a2c-6c31-fa23-72e8-4b34ecdced3d.png)

記載の通り、Aspera CLI はHost OS (Linux、macOS、Windows) に直接Installすることもできますし、ContainerとしてInstallすることもできます。

私のPCはWindowsなので、Host OSに直接Installするのを選択しました。よって、順番に下記の３つのコンポーネントのInstallしましょう：
- Ruby
- aspera-cli
- Aspera SDK (ascp)

基本的にはGitHubの手順に従えば良いと思います。ただし、手順が非常に長く、どこかで迷ってしまう恐れがありますので、主な手順を説明します。

## 1. RubyをInstallする

OSに応じてRubyのInstall方法が変わります。WindowやMacの場合には、READMEの下記のような部分にご参考ください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2075462/8e2c47c6-e525-a0fa-a3bb-a86b0897af3b.png)

私のWindow PCで、簡単に**https://rubyinstaller.org/** Siteに行って、**WITH DEVKIT**の最新版をDownloadしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2075462/f3f84576-a515-042a-f524-a8edcaa4efdb.png)

Downloadした**rubyinstaller-devkit-3.2.2-1-x64.exe** FileをDouble ClickしてRubyをInstall始めます。その流れの中で、**Select Components**のStepで必ず**MSYS2 development toolchain 2023-04-01**をご選択ください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2075462/04a7be0b-7e1d-7f0d-7081-7a0bb0f7a547.png)

後は、**Finish** ボタンを押す前に、**Run 'ridk install' to set up MSYS2 and development toolchain**との選択しがCheckされたのをご確認ください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2075462/12668124-9c75-c966-6ebe-cd562ff23e43.png)

次には、MSYS2のSet Up画面がPopupします。
最初の質問 **Which components shall be installed? If unsure press ENTER [1,3]**　には、英語文字で**1,3**をご入力ください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2075462/7aedf706-d01e-f826-7254-0a2844068478.png)

Install MSYS2 and MINGW development toolchain succeededという文字が見えたら、最後の質問に何も入力せずに、Enterを押して、画面をクロスします。これで、RubyのIntsallが完了しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2075462/0c70dad8-7680-fe06-784a-b6335fa7b6da.png)

## 2. aspera-cliをInstallする

Windows CMDでgem install aspera-cliを実行して、aspera-cliをInstallします。
情報保護のために、Pathの一部をxxxにしました。

```ctr:Windows CMD
C:\Users\xxx>gem install aspera-cli
```

## 3. Aspera SDK (ascp)をInstallする

最後に、Aspera CLIが利用できるAspera SDKをInstallします。
**注：** このAspera SDKは、記事[「Aspera Transfer SDKを使ってIBM Cloud Object Storage (ICOS) へ高速転送を実現する」](https://qiita.com/xiaojinse/items/b6700eeaccc4f1b2acad)に紹介されたProgramが利用するAspera Transfer SDKとは別のものです。

```ctr:Windows CMD
C:\Users\xxx>ascli conf ascp install
```
以上は、Aspera CLIのInstall手順です。

# Aspera CLIを使って、ICOS BucketへFileをUploadする

## 1. ICOS Bucketの情報を設定する

Aspera CLIは複数のICOS バケット情報を管理でき、各情報はconfigとして管理されます。

下記の例には、**mycos**というconfigを作成します。作成コマンドで **update** サブコマンドを使用するのは違和感を感じるかもしれません。

```ctr:Windows CMD
C:\Users\xxx>ascli conf id mycos update --bucket=testbucket-qiita --endpoint=https://s3.jp-tok.cloud-object-storage.appdomain.cloud --apikey=cjWF4fT3GWOBHaExxxxxxxxxxxxxxxxxxxxxxxx --crn=crn:v1:bluemix:public:cloud-object-storage:global:a/039dbe6794084c7cb514a276dd2345da:73ac0d0d-6c81-4e26-9645-50e988329b95::
```
コマンドの変数について説明します：
--**bucket=testbucket-qitta** 　：ICOS BucketのFull nameです。　　　
**注**：ICOS Bucketを作成した際に、Bucketの名前をtestbucket-**qiita**にしようと思ったのですが、間違ってtestbucket-**qitta**にしてしまいました。
--**bucket=testbucket-qiita** 　：ICOS BucketのFull nameです。　　　
--**endpoint=https://s3.jp-tok.cloud-object-storage.appdomain.cloud**   　：本IBM Cloud RegionのICOS Service Public Endpointです。先頭に**https://**が必要ということをご注意ください。
--**apikey=cjWF4fT3GWOBHaExxxxxxxxxxxxxxxxxxxxxxxx**　：ICOS Accessために、API Keyが必要です。情報保護のため、api_keyの一部はxxxにしました。
--**crn=crn:v1:bluemix:public:cloud-object-storage:global:a/039dbe6794084c7cb514a276dd2345da:73ac0d0d-6c81-4e26-9645-50e988329b95::**     ：ICOS Service InstanceのCRNです。        

続きまして、この**mycos** configをdefault configに設定します。
```ctr:Windows CMD
C:\Users\xxx>ascli conf id default set cos mycos
```


## 2. ICOS BucketへFileをUploadする

まずは、Upload対象Fileを準備します。下記の出力のように、testpictures folderには，101.jpgと102.jpgが存在します。

```ctr:Windows CMD
C:\Users\xxx>dir testpictures
 Volume in drive C is Windows
 Volume Serial Number is 94E2-EDBC

 Directory of C:\Users\xxx\testpictures

07/04/2023  07:10 PM    <DIR>          .
07/04/2023  07:05 PM    <DIR>          ..
07/18/2022  09:08 AM            12,589 101.jpg
07/18/2022  09:08 AM            12,589 102.jpg
               2 File(s)         25,178 bytes
               2 Dir(s)  40,161,349,632 bytes free
```

次は、ascliでtestpictures folderをICOS BucketにUploadします。Folderを指定すると、Folder内すべてのFileをUpload対象になります。
```ctr:Windows CMD
C:\Users\xxx>ascli cos node upload testpictures
102.jpg                                       100%   12KB             00:01
101.jpg                                       100%   12KB             00:01
Completed: 24K bytes transferred in 2 seconds
 (94K bits/sec), in 2 files, 1 directory.

```

## 3. IBM Cloud PortalでUploadしたFileを確認する

IBM Cloud PortalでUploadしたFileが見えました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2075462/4d3e54dc-2939-0a40-c715-230f187d8d16.png)

以上は、Aspera CLIを使ってFile Uploadを試しました。

# 料金については

記事[「Aspera Transfer SDKを使ってIBM Cloud Object Storage (ICOS) へ高速転送を実現する」](https://qiita.com/xiaojinse/items/b6700eeaccc4f1b2acad)には料金について既に述べましたが、ここで再度簡単に説明します。

Aspera CLIのSWが無料で利用可能です。
Aspera CLIを使って、ICOS BucketにFile Uploadする際にも料金発生しません。
Aspera CLIを使って、ICOS BucketからFile Downloadする際には、ダウンロードしたファイルのStorage Classおよびデータ量に応じて料金が発生します。詳細料金は[Object Storageの作成画面](ICOShttps://cloud.ibm.com/objectstorage/create#pricing)で確認できます。

# まとめに

本記事はご参考になれば幸いです。
ごコメントとご質問、大歓迎です。