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?

【IBM Cloud】IBM Cloud Object Storageでデータの有効期限や自動削除機能を設定してみた

Last updated at Posted at 2025-10-02

はじめに

今回はIBM CloudのストレージソリューションであるIBM Cloud Object Storage(ICOS)にアップロードしたデータの有効期限や自動削除機能を設定する流れをまとめました。
本検証にはIBM Cloudアカウントのほか、以下の前提条件が満たしていることが前提となります。

今回記事の前提条件

  • IBM Cloud CLIおよびICOS CLIがインストールされている
  • ライフサイクル・ポリシーを追加または変更するための、IAMの「Writer」役割が付与されている
  • 今回の検証にはMacbook(MacOS)を利用しています

ICOSのライフサイクル管理機能について

IBM Cloud Object Storageは単なるオブジェクトデータを保存するストレージ機能だけでなく、コールドデータのアーカイブ(自動で低コストオプションへ移行)、Expiration(期限切れルールによる古いデータの削除機能)、およびS3互換のObject Lock(不変保管)、Immutable Object Storage(保持ポリシーと権限)、オブジェクトのバージョン管理(オブジェクトのアーカイブ状態からの復元、削除)といったライフサイクル管理機能を備えており、バケット単位でルールを定義して保管コストの最適化とコンプライアンス保護を同時に実現できます。

今回はその中の一つである、Expiration(期限切れルールによる古いデータの削除機能)を設定してみたので、その流れを記載しています。

検証の流れ

ICOSインスタンスとバケットの作成

ICOS画面にてインスタンスの作成をクリックします。
スクリーンショット 2024-07-11 17.19.45.png
インフラの選択やインスタンス名、リソースグループなどの設定を行ってインスタンスを作成します。
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などを設定し、バケットを作成します。こちらの設定はバケット作成後には変更ができませんのでご注意ください。なお、添付とは異なりますが、今回はmonn-test-1という名のバケットを東京リージョンに作成しています。
FireShot Capture 009 - Cloud Object Storage - IBM Cloud - cloud.ibm.com.png

IBM Cloudにログイン

まずはターミナルにて、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の操作対象としてCRNで紐づける必要がありますが、そのCRNを確認します。
作成したICOSインスタンスに入り、詳細にて確認、コピーします。
スクリーンショット 2025-09-19 16.00.35.png
スクリーンショット 2025-09-19 16.00.46.png

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

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

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

サービス・インスタンス ID/CRN: ()> xxx:xx:bluemix:public:cloud-object-storage:xxxxxx:a/xxxxxxxxxxxxxxxxxxxxx:xxxxxx-xxx-xxx-beea-1xxxxxxxxx:bucket:moon)> crn:v1:bluemix:public:cloud-object-storage:global:a/xxxxxxxxxxxxxxxxxxxxx:xxxxxx-xxx-xxx-beea-1xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:bucket:moon-test-1
新しいサービス・インスタンス ID/CRN を保存しています...
OK
サービス・インスタンス ID/CRN を正常に保存しました。

CRN設定が完了したら、以下のコマンドを入力して適用を確認します。

ibmcloud cos config list
結果
COS API Key: <your-api-key>
xxx:xx:bluemix:public:cloud-object-storage:xxxxxx:a/xxxxxxxxxxxxxxxxxxxxx:xxxxxx-xxx-xxx-beea-1xxxxxxxxx:bucket:moon)> crn:v1:bluemix:public:cloud-object-storage:global:a/xxxxxxxxxxxxxxxxxxxxx:xxxxxx-xxx-xxx-beea-1xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:bucket:moon-test-1
Region: jp-tok

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

ダミーファイルの作成

次はICOSにアップロードして設定により削除するためのダミーファイルを作成します。
以下のコマンドで簡単に作成することができます。今回はdummy-file.datというファイル名の10MBの小さいファイルを作成しました。

dd if=/dev/urandom of=dummy-file.dat bs=1M count=10
結果
10+0 records in
10+0 records out
10485760 bytes transferred in 0.016992 secs (617099812 bytes/sec)

作成したファイルは以下のコマンドでICOSのバケットにアップロードします。

ibmcloud cos object-put \
  --bucket moon-test-1 \
  --key dummy-file/dummy-file.dat \
  --body ./dummy-file.dat \
  --region jp-tok
結果
OK
オブジェクト 'dummy-file/dummy-file.dat' がバケット 'moon-test-1' に正常にアップロードされました

コンソールで確認したら、しっかりファイルが入っていることがわかります。
スクリーンショット 2025-09-19 16.12.47.png

ルールの設定

次は有効期限設定や削除ルールを設定します。
ルールは複数の内容で設定することができますが、今回は特定の時間に設定の対象となるファイルを削除する前提にしています。

ルールを適用するために、bucket-lifecycle-configuration-putコマンドを使って設定を行います。
上記の通り、今回は2025年9月20日の00:00に接頭部にdummy-fileが入っているファイルを全て削除する指定をしました。
--bucketには作成したバケット名を、--regionには作成したバケットのリージョンを、Filterには削除する対象のキーワードとしてファイルの接頭部を、Expirationには削除のバッチを与える日付を入力します。

ルール指定&結果
moonsy@moon ~ % ibmcloud cos bucket-lifecycle-configuration-put \
  --bucket moon-test-1 \
  --region jp-tok \
  --lifecycle-configuration '{
    "Rules": [
      {
        "ID": "delete-on-a-date",
        "Filter": { "Prefix": "dummy-file/" },
        "Status": "Enabled",
        "Expiration": { "Date": "2025-09-20T00:00:00.000Z" }
      }
    ]
  }'

OK

再度コンソールにてバケットを確認すると、ライフサイクル・ポリシー欄に削除ルールが適用されていることがわかります。
スクリーンショット 2025-09-19 16.21.27.png
スクリーンショット 2025-09-19 16.21.45.png

今回のように一定期間に削除したり、接頭部のフィルタリングにて削除するルールのほか、特定のタグキーが紐づいたデータのみ、一定容量以下のデータのみ、などのルール設定も可能ですので、必要に応じてIBM Cloud Docs各種ルールを適用してみてください。

結果確認

ルール適用後、約4日後にデータが削除されていたことがわかります。
スクリーンショット 2025-09-24 11.09.10.png

繰り返しとなりますが、削除ルールは適用してから翌日のUTC00:00:00にバッチ処理が行われ、その後のタイミングで削除される仕様となっています。
IBM Cloud Docsにも有効期限ルールの変更が有効になるまでに最大 24 時間かかると想定しておいてください。との記載がありますが、今回の検証には週末を挟んだためか、バッチ実行が予想よりは遅くなりました。
したがって、削除のタイミングは確約された基準ではないものとご理解ください。

また、今回の検証ではターミナルのコマンドにてルール設定していますが、以下のようにIBM Cloudコンソール上でも簡単に設定することができます。
もしスクリプト作成にて自動化を行うなどの使い方ではなく、単なるルール設定だけの場合にはコンソールでの設定が簡単かもしれないので、合わせて試してみてください。
スクリーンショット 2025-10-02 14.00.23.png

参考

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?