1
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?

【IBM Cloud】IBM Cloud Object Storageのプランごとの料金を確認してみた

1
Last updated at Posted at 2025-10-20

はじめに

今回はIBM Cloud Object Storage(ICOS)の異なるプランに対して同条件の操作を実施し、プランごとの料金を確認してみたので、その流れを作成しています。
本検証にはIBM Cloudアカウントが前提になっており、今回Macbook(MacOS)を利用しています。

ICOSの料金プランについて

ICOSでは以下の二つのプランを提供しています。

  • Standard Plan
    • 最も一般的なのは 標準プラン ・インスタンスであり、ほとんどのワークロードに推奨
  • One Rate Plan
    • 合計ストレージ容量に比べて大量のアウトバウンド帯域幅 ( IBM Cloud 外部のパブリックネットワークで転送されるデータ) を必要とするワークロードに推奨
    • 保管費用が高い代わりに価格変動部分を抑えることが可能

一般的にICOSを利用する際にはほとんどがStandard Planで問題ありませんが、大量データかつ高頻度でデータにアクセスする必要があるなどの要件の場合には、One Rate Planを利用することによってコストの最適化や場合によってはStandard Planより安価に利用することが期待できます。

以下、簡単な比較表をまとめています。

項目 Standard プラン One Rate プラン
課金方式 従量課金:容量 + リクエスト数に応じて課金 固定料金:リクエスト数の影響がほぼ固定、容量課金あり
容量課金 GB 単位で従量課金 GB 単位で従量課金
リクエスト課金(PUT/GET/DELETEなど) 従量課金であり大量アップロード・ダウンロードで増える 基本的に固定料金でリクエスト数の影響はほぼなし
用途 小規模・中規模ストレージ、リクエスト数が少ない 大量の PUT/GET がある場合やリクエスト課金を一定に抑えたい
メリット 容量に応じた従量課金でコスト最適化可能 リクエスト課金を気にせず大量ファイルアップロードが可能
デメリット PUT/GET が多い場合、課金が増えていく 容量課金は同じで、料金は固定に近いため少量データでは割高になる可能性がある

2025年9月25日現在、One-Rateインスタンスは、リージョナルおよびシングルデータセンターのロケーションでご利用いただけますが、クロスリージョンのロケーションではご利用いただけません。 ロケーションに基づく4つの価格設定層があります。

  • 北アメリカ: us-south、 us-east、 ca-tor、 mon01、 sjc04
  • ヨーロッパ: eu-de、 eu-gb、 eu-es、 ams03、 mil01、 par01
  • アジア: au-syd、 jp-osa、 jp-tok、 che01、 sng01
  • 南アメリカ: br-sao

検証の流れ

ICOSインスタンスおよびバケットの作成

まずは検証に利用するICOSのインスタンスを作成します。
Planはインスタンスごとに適用されるため、今回はStandard Plan用のインスタンスとOne Rate Plan用のインスタンスの2つが必要となります。

また、インタンス内で実際ログデータが保管される論理的区域であるバケットもそれぞれ作成する必要があります。

ICOS画面にてインスタンスの作成をクリックします。
スクリーンショット 2024-07-11 17.19.45.png
インフラの選択やインスタンス名、リソースグループなどの設定を行ってインスタンスを作成します。

今回のインスタンス名はわかりやすくするために、moon-standardmoon-onerateで作成しています。
(以下の手順では例の画像を貼っており、インスタンス名などが異なる場合があります。)
FireShot Capture 008 - Cloud Object Storage - IBM Cloud - cloud.ibm.com.png

ICOSのインスタンスが作成されたら、次は「バケット」を作成します。
バケットの作成をクリックします。
スクリーンショット 2024-07-11 17.20.23.png

Quick Startテンプレートを含め、複数のテンプレートが用意されていますが、今回はカスタムテンプレートにて作成しました。
スクリーンショット 2024-07-11 17.21.28.png

バケット名や可用性の設定、リージョン、Storage Tierなどを設定し、バケットを作成します。こちらの設定はバケット作成後には変更ができませんのでご注意ください。
なお、繰り返しとなりますが、今回バケット名もインスタンス名と同様にわかりやすく区別するためmoon-standardmoon-onerateとし、両方とも東京リージョンに作成しています。
FireShot Capture 009 - Cloud Object Storage - IBM Cloud - cloud.ibm.com.png

以下、Standard PlanとOne Rate Planのそれぞれのインスタンスとバケットが作成されたことがわかります。
スクリーンショット 2025-09-25 15.35.26.png
スクリーンショット 2025-09-25 15.35.35.png

ダミーファイルの作成とバケットへのアップロード

次は各バケットにアップロードして課金を発生するための、ダミーファイルを作成します。
今回は10GBのファイル5個、合計50GBのダミーファイルを作成しました。

ターミナルにて以下のコマンドを入力します。

mkdir -p testfiles
cd testfiles
for i in {1..5}; do
    dd if=/dev/urandom of=10GB_file_$i.bin bs=1G count=10
done

これでtestfilesというフォルダーの中に10GBのダミーファイル5個で合計50GBのファイルが作成されました。

以下のコマンドにて、10個のファイルが作成されているか確認します。

ls testfiles | wc -l
結果
moonsy@moon ~ % ls testfiles | wc -l
    5

次はICOSにアップロードするためにIBM Cloudにログインします。
IBM Cloud右上のプロフィールアイコンをクリックし、CLIとAPIにログインをクリックしますと、以下のログインCLIが表示されます。IBM Cloud CLIをコピーしターミナルにコマンド入力することで簡単にログインできます。
また、必要に応じてリージョンを選択しますが、今回はインスタンスやバケットの作成通り、東京(jp-tok)を選択します。
スクリーンショット 2023-01-27 14.52.45.png
スクリーンショット 2023-01-27 14.52.54.png

結果
moonsy@moon ~ % ibmcloud login -a https://cloud.ibm.com -u passcode -p xxxxxxxxxx
API エンドポイント: https://cloud.ibm.com
認証中です...
OK

ターゲットのアカウント itz-cp-jpn (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) <-> xxxxxxx


リージョンを選択します (または Enter キーを押してスキップします):
1. au-syd
2. in-che
3. jp-osa
4. jp-tok
5. eu-de
6. eu-es
7. eu-gb
8. ca-tor
9. us-south
10. us-south-test
11. us-east
12. br-sao
数値を入力してください> 4
ターゲットのリージョン jp-tok


API エンドポイント:   https://cloud.ibm.com
Region:               jp-tok
ユーザー:             S.Moon@ibm.com
アカウント:           itz-cp-jpn (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) <-> xxxxxxx
リソース・グループ:   リソース・グループがターゲットになっていません。'ibmcloud target -g RESOURCE_GROUP' を使用してください

アップロードの際にはICOS CLIを利用しますが、CLIがインストールされていない場合は以下のコマンドにてインストールを行なってください。

ibmcloud plugin install cloud-object-storage
結果
moonsy@moon ~ % ibmcloud plugin install cloud-object-storage

リポジトリー 'IBM Cloud' から 'cloud-object-storage' を検索しています...
プラグイン 'cloud-object-storage[cos] 1.10.0' がリポジトリー 'IBM Cloud' 内で見つかりました
バイナリー・ファイルをダウンロードしようとしています...
 19.92 MiB / 19.92 MiB [===========================================================================================================] 100.00% 0s
20887330 バイトがダウンロードされました
バイナリーをインストールしています...
OK
プラグイン 'cloud-object-storage 1.10.0' は /Users/moonsungyun/.bluemix/plugins/cloud-object-storage に正常にインストールされました。 'ibmcloud plugin show cloud-object-storage' を使用して詳細を表示してください。

ICOS CLIが利用できるようになりましたら、まずはStandard Plan用のインスタンスにアップロードします。
Standard Plan用インスタンスにアップロードしますが、ICOSの操作対象としてCRNで紐づける必要がありますが、Standard Plan用のインスタンスに入り、詳細にて確認、コピーします。
スクリーンショット 2025-09-19 16.00.35.png
スクリーンショット 2025-09-19 16.00.46.png

ターミナルに戻り、以下のコマンドを入力します。その後、コピーしたCRNを入力します。

ibmcloud cos config crn
結果
moonsy@moon ~ % ibmcloud cos config crn

サービス・インスタンス ID/CRN: ()>                                                                                                                    moonsy@moon ~ % ibmcloud cos config crn

サービス・インスタンス ID/CRN: ()> <Standard Plan用インスタンスのCRN>
新しいサービス・インスタンス ID/CRN を保存しています...
OK
サービス・インスタンス ID/CRN を正常に保存しました。

CRNを指定する際にはバケットの固有CRNではなく、ICOSのインスタンスCRNを入力する必要があります。

CRN設定が完了したら以下のアップロードコマンドを入力します。

for f in ./testfiles/*; do
  ibmcloud cos upload --bucket moon-standard \
    --region jp-tok \
    --key "testfiles/$(basename "$f")" \
    --file "$f"
done
結果
moonsy@moon ~ % for f in ./testfiles/*; do
  ibmcloud cos upload --bucket moon-standard \
    --region jp-tok \
    --key "testfiles/$(basename "$f")" \
    --file "$f"
done
OK
オブジェクト 'testfiles/10GB_file_1.bin' がバケット 'moon-standard' に正常にアップロードされました。
OK
オブジェクト 'testfiles/10GB_file_2.bin' がバケット 'moon-standard' に正常にアップロードされました。
OK
オブジェクト 'testfiles/10GB_file_3.bin' がバケット 'moon-standard' に正常にアップロードされました。
OK
オブジェクト 'testfiles/10GB_file_4.bin' がバケット 'moon-standard' に正常にアップロードされました。
OK
オブジェクト 'testfiles/10GB_file_5.bin' がバケット 'moon-standard' に正常にアップロードされました。

コンソール上のバケットでもファイルが格納されたことがわかります。
スクリーンショット 2025-10-03 18.06.19.png

次はStandard Planと同様にOne Rate Plan用のバケットにも同じダミーファイルをアップロードします。

ibmcloud cos config crn
結果
moonsy@moon ~ % ibmcloud cos config crn

サービス・インスタンス ID/CRN: ()>                                                                                                                    moonsy@moon ~ % ibmcloud cos config crn

サービス・インスタンス ID/CRN: ()> <One Rate Plan用インスタンスのCRN>
新しいサービス・インスタンス ID/CRN を保存しています...
OK
サービス・インスタンス ID/CRN を正常に保存しました。

CRN設定が完了したら以下のアップロードコマンドを入力します。

for f in ./testfiles/*; do
  ibmcloud cos upload --bucket moon-onerate \
    --region jp-tok \
    --key "testfiles/$(basename "$f")" \
    --file "$f"
done
結果
moonsy@moon ~ % for f in ./testfiles/*; do
  ibmcloud cos upload --bucket moon-onerate \
    --region jp-tok \
    --key "testfiles/$(basename "$f")" \
    --file "$f"
done
OK
オブジェクト 'testfiles/10GB_file_1.bin' がバケット 'moon-onerate' に正常にアップロードされました。
OK
オブジェクト 'testfiles/10GB_file_2.bin' がバケット 'moon-onerate' に正常にアップロードされました。
OK
オブジェクト 'testfiles/10GB_file_3.bin' がバケット 'moon-onerate' に正常にアップロードされました。
OK
オブジェクト 'testfiles/10GB_file_4.bin' がバケット 'moon-onerate' に正常にアップロードされました。
OK
オブジェクト 'testfiles/10GB_file_5.bin' がバケット 'moon-onerate' に正常にアップロードされました。

コンソールを確認したらファイルがアップロードされたことがわかります。
スクリーンショット 2025-10-03 18.06.49.png

格納データのダウンロード

それぞれのバケットにダミーファイルのアップロードが完了したら、今度はバケット内のダミーファイルをローカルPCにダウンロードすることによってアウトバウンド料金を発生します。

以下のコマンドにて転送先インスタンスのcrnを指定します。まずはStandard Plan用のバケットからダウンロードするため、Standard PlanのインスタンスのCRNを指定します。

ibmcloud cos config crn
結果
moonsy@moon ~ % ibmcloud cos config crn

サービス・インスタンス ID/CRN: ()>                                                                                                                    moonsy@moon ~ % ibmcloud cos config crn

サービス・インスタンス ID/CRN: ()> <Standard Plan用インスタンスのCRN>
新しいサービス・インスタンス ID/CRN を保存しています...
OK
サービス・インスタンス ID/CRN を正常に保存しました。

次は以下のスクリプトにてローカルPCにバケット内のデータをダウンロードします。
以下のスクリプトには、私が検証に使ったPCではディスク容量が足りず検証できなかったため、ダウンロードが完了したら一度削除する命令も含めています。

#!/bin/bash
# ==============================
# IBM Cloud Object Storage Downloader with Auto Delete
# ==============================

BUCKET="moon-standard"
REGION="jp-tok"
FILES=("10GB_file_1.bin" "10GB_file_2.bin" "10GB_file_3.bin" "10GB_file_4.bin" "10GB_file_5.bin")
LOCAL_DIR="$HOME/download_test"
REPEAT=20
MAX_RETRY=3

echo "=== IBM Cloud Object Storage Downloader ==="
echo "保存先: $LOCAL_DIR"
echo "バケット: $BUCKET"
echo

# 繰り返し実行
for round in $(seq 1 $REPEAT); do
  echo "=== Round $round/$REPEAT ==="

  for file in "${FILES[@]}"; do
    TARGET="$LOCAL_DIR/$file"

    # 既存ファイルがあればスキップ
    if [ -f "$TARGET" ]; then
      echo "⚠️  $file はすでに存在します。削除して次に進みます。"
      rm -f "$TARGET"
      continue
    fi

    echo "⬇️  ダウンロード開始: $file"

    success=false
    for attempt in $(seq 1 $MAX_RETRY); do
      ibmcloud cos download \
        --bucket "$BUCKET" \
        --key "$file" \
        --region "$REGION" \
        "$TARGET"

      result=$?

      if [ $result -eq 0 ]; then
        echo "✅ $file のダウンロード完了。"
        success=true
        break
      else
        echo "❌ $file のダウンロードに失敗 (試行 $attempt/$MAX_RETRY)。再試行します..."
        sleep 10
      fi
    done

    if [ "$success" = true ]; then
      # ダウンロード成功時に削除
      echo "🧹 $file を削除します..."
      rm -f "$TARGET"
      echo "✅ $file を削除しました。"
    else
      echo "🚫 $file のダウンロードに $MAX_RETRY 回失敗。スクリプトを終了します。"
      exit 1
    fi

    echo
  done
done

echo "🎉 すべてのラウンドが完了しました。"

次は以下のコマンドでスクリプトの実行権限を付与します。

chmod +x download_standard.sh

最後に以下のコマンドでスクリプトを実行すると、ファイルのダウンロードが開始されますが、スクリプトの内容通り一度ダウンロードが完了したらフォルダー内のダミーファイルが削除され、自動的に2回目のダウンロードが開始されることがわかります。
なお、今回はdownload_standard.shという名前のスクリプトを作成しました。

caffeinate -i ./download_standard.sh
結果
moonsy@moon download_test % caffeinate -i ./download_standard.sh
=== IBM Cloud Object Storage Downloader ===
保存先: /Users/moonsungyun/download_test
バケット: moon-standard

=== Round 1/20 ===

⬇️  ダウンロード開始: 10GB_file_1.bin
OK
'10GB_file_1.bin' がバケット 'moon-standard' から正常にダウンロードされました
10.00 GiB ダウンロードされました。
✅ 10GB_file_1.bin のダウンロード完了。
🧹 10GB_file_1.bin を削除します...
✅ 10GB_file_1.bin を削除しました。

⬇️  ダウンロード開始: 10GB_file_2.bin
OK
'10GB_file_2.bin' がバケット 'moon-standard' から正常にダウンロードされました
10.00 GiB ダウンロードされました。
✅ 10GB_file_2.bin のダウンロード完了。
🧹 10GB_file_2.bin を削除します...
✅ 10GB_file_2.bin を削除しました。

⬇️  ダウンロード開始: 10GB_file_3.bin
OK
'10GB_file_3.bin' がバケット 'moon-standard' から正常にダウンロードされました
10.00 GiB ダウンロードされました。
✅ 10GB_file_3.bin のダウンロード完了。
🧹 10GB_file_3.bin を削除します...
✅ 10GB_file_3.bin を削除しました。
.
.
.
=== Round 20/20 ===
⬇️  ダウンロード開始: 10GB_file_5.bin
OK
'10GB_file_5.bin' がバケット 'moon-standard' から正常にダウンロードされました
10.00 GiB ダウンロードされました。
✅ 10GB_file_5.bin のダウンロード完了。
🧹 10GB_file_5.bin を削除します...
✅ 10GB_file_5.bin を削除しました。

🎉 すべてのファイルのダウンロードが完了しました。

Standard Plan用のバケットから全てのダウンロード(合計1TB)が完了したら、次は同じ方法でOne Rate Plan用のバケットを指定し、ダウンロードを実施します。

ibmcloud cos config crn
結果
moonsy@moon ~ % ibmcloud cos config crn

サービス・インスタンス ID/CRN: ()>                                                                                                                    moonsy@moon ~ % ibmcloud cos config crn

サービス・インスタンス ID/CRN: ()> <One Rate Plan用インスタンスのCRN>
新しいサービス・インスタンス ID/CRN を保存しています...
OK
サービス・インスタンス ID/CRN を正常に保存しました。

次はStandard用のファイルと同様にスクリプトでダウンロードしますが、上記のスクリプトのバケット名を変更するだけで、同様に動作します。なお、今回はdownload_onerate.shという名前でスクリプトを作成しました。

スクリプト例
BUCKET="moon-standard" →(変更)→ BUCKET="moon-onerate"

スクリプトの修正後、同様に以下のコマンドにてスクリプトの実行権限を付与します。

chmod +x download_onerate.sh

最後に以下のコマンドにてスクリプトを実行したらダウンロードが開始されます。

caffeinate -i ./download_onerate.sh
結果
moonsy@moon download_test % caffeinate -i ./download_onerate.sh
=== IBM Cloud Object Storage Downloader ===
保存先: /Users/moonsungyun/download_test
バケット: moon-onerate

=== Round 1/20 ===
⬇️  ダウンロード開始: 10GB_file_1.bin
OK
'10GB_file_1.bin' がバケット 'moon-onerate' から正常にダウンロードされました
10.00 GiB ダウンロードされました。
✅ 10GB_file_1.bin のダウンロード完了。
🧹 10GB_file_1.bin を削除します...
✅ 10GB_file_1.bin を削除しました。

⬇️  ダウンロード開始: 10GB_file_2.bin
OK
'10GB_file_2.bin' がバケット 'moon-onerate' から正常にダウンロードされました
10.00 GiB ダウンロードされました。
✅ 10GB_file_2.bin のダウンロード完了。
🧹 10GB_file_2.bin を削除します...
✅ 10GB_file_2.bin を削除しました。

⬇️  ダウンロード開始: 10GB_file_3.bin
OK
'10GB_file_3.bin' がバケット 'moon-onerate' から正常にダウンロードされました
10.00 GiB ダウンロードされました。
✅ 10GB_file_3.bin のダウンロード完了。
🧹 10GB_file_3.bin を削除します...
✅ 10GB_file_3.bin を削除しました。
.
.
.
=== Round 20/20 ===
⬇️  ダウンロード開始: 10GB_file_5.bin
OK
'10GB_file_5.bin' がバケット 'moon-onerate' から正常にダウンロードされました
10.00 GiB ダウンロードされました。
✅ 10GB_file_5.bin のダウンロード完了。
🧹 10GB_file_5.bin を削除します...
✅ 10GB_file_5.bin を削除しました。

🎉 すべてのラウンドが完了しました。

使用料の確認

今回利用したICOSインスタンスの利用料を確認するために、コンソールの管理請求および使用料にアクセスします。
スクリーンショット 2025-10-20 16.19.22.png
使用量カテゴリーにてCSVのエクスポートをクリックします。なお、使用量の対象期間を間違わないようにご注意ください。
スクリーンショット 2025-10-20 16.19.42.png
CSVファイルを対象ICOSインスタンスにソート(moon-standard、moon-onerate)すると、以下のパラメータで料金が表示されます。なお、料金に関する詳細はこちらのDocsをご確認ください。

  • GIGABYTE:主にストレージに保存されている実データ容量に対する課金
  • API CALLS:データの書き込み、読み取り(Class A B)に対する課金

今回の検証に使ったバケットで上記パラメータの合計を確認したところ、Standard Plan(102.04ドル)に比べてOne Rate Plan(51.04ドル)がほぼ半額の料金しか発生していないことがわかりました。

そのため、今回ダウンロードを行なったファイル数は10TBですが、10TBぐらいの容量でも使い方によってはOne Rate Planの方がコストの最適化を期待することができるかと思います。

参考

1
0
1

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?