はじめに
IBM Cloudには安価で様々な種類のファイルを保存できるストレージとしてIBM Cloud Object Storage(ICOS)が利用できます。ICOSはデータの取り出しの頻度に応じてSmart・Standard・Vault・Cold Vaultの4つのプランを選択可能です。
さらに、セキュリティ要件などで保管しなければならないが、ほとんど利用することがないようなデータに対してはデータのアーカイブ化を実施することでさらに安価にストレージを利用することが可能です。金額感としては、1TBのデータ1ヶ月を200円程度、1PBなら20万円程度で利用可能です。
また、アーカイブ機能を利用する場合はアーカイブしたデータは別のオフラインストレージに移動するため、再度データを読み込みたい場合はデータをリトリーブする必要があります。
本記事ではICOSでデータのアーカイブする方法とアーカイブしたデータを取り出す方法について記載します。
アーカイブ方法の手順はDocs:コールド・データのアーカイブとアクセスを参考にしています。
ICOSのアーカイブ機能について
ICOS内に保存しているデータは事前にアーカイブ設定で日数を指定することでオフラインの安価(最も安いCold Vaultプランの1/5程度)なストレージへとアーカイブすることができます。
アーカイブでは保管と復元で課金が発生します。詳細な価格設定は以下を参照ください。
https://cloud.ibm.com/objectstorage/create#pricing
アーカイブは通常のアーカイブと高速アーカイブの2種類が存在し、通常のアーカイブはデータの復元に最長で12時間かかりますが、高速アーカイブを使用すると2時間以内に復元が可能です。
復元を実施する場合はアーカイブ先のオフラインストレージからアーカイブ元のストレージにアーカイブデータのコピーが一時的に作成されます。指定日数後、アーカイブデータのコピーは削除されます。(アーカイブデータはそのまま残ります)
また、アーカイブ機能は機能設定後に新しく保存したデータにのみ適用されるため、アーカイブ設定前に保管されているファイルについてはアーカイブ適用外となります。適用させたい場合はアーカイブ設定をしたバケットにデータを移行する必要があります。
実装手順
事前にICOSは作成しておきます。ICOSの作成はDocs : プランの選択とインスタンスの作成を参考にしてください。
実施する作業は以下の通りです。
- アーカイブルールの作成
- アーカイブの実施
- データの復元
1. アーカイブルールの作成
事前に作成したICOSにバケットを作成します。
ICOSのインスタンスからバケットの作成を選択します。
バケットはCreate a Custom Bucketを選択します。
バケットに任意の名前をつけ拡張機能のアーカイブ・ルールの追加を選択します。
アーカイブルールではバケットに保存したデータがどの期間でアーカイブ化するかの日数設定が可能です。0日と指定することで保存したデータの即時アーカイブも可能です。本記事では0日で指定して進みます。
アーカイブの設定ができたら下のバケットの作成ボタンを押してバケットを作成が完了です。
2. アーカイブの実施
アーカイブルールを作成したバケットに実際にデータを書き込み、アーカイブ化されることを確認します。
先ほど作成したバケットを開き、右上のアップロードを選択します。
ファイルのアップロードを選択し、適当なファイルをアップロードし、アップロードをクリックするとファイルが転送されてアップロードが完了します。
今回はアーカイブルールを0日としたため、アップロードしたファイルを確認するとアーカイブされていることが確認できます。
3. データの復元
最後にアーカイブしたデータの復元を実施します。
アーカイブしたデータを選択すると、データの概要が表示されるので、右上のライフサイクル→オブジェクトの復元を選択すると復元後のオブジェクト保存期間を入力できるので、任意の日数を入力し保存を選択します。
保存後もう一度確認するとアーカイブルールの状態がアーカイブ済みから復元中に変化しており、復元の欄がオブジェクト復元処理中に変化していることが確認できます。この復元処理は最大で12時間で完了します。
復元完了後は以下のように状態が復元済みに変化しており、画面上部にオブジェクトのダウンロードボタンが出現していることが確認できます。
この復元したアーカイブのコピーデータは先ほど指定した1日間はバケット上に存在し、1日後に自動で削除されます。(アーカイブデータは残ります)
アーカイブされたデータのAPIについて
ICOSではs3と互換性のあるAPIが使用できます。
実際にAPIでデータを取得した例を紹介します。事前準備として以下を参考にIAMからapikeyの作成とICOSバケットのリージョンのendpointを確認しておいてください。
対象のICOSバケット内に以下のデータが入っているバケット内のリストを実施します。
- test1:アーカイブしていないデータ
- test2:高速アーカイブ済みデータ
- test3:高速アーカイブ復元中データ
まずはAPIアクセスのためのBearer tokenを取得します。apikeyの項目は自身で作成したapikeyを入力してください。
$ curl -k -X POST --header "Content-Type: application/x-www-form-urlencoded" --header "Accept: application/json" --data-urlencode "grant_type=urn:ibm:params:oauth:grant-type:apikey" --data-urlencode "apikey=(自分で作成したapikey)" "https://iam.cloud.ibm.com/identity/token"
{"access_token":"(bearer token)","refresh_token":"not_supported","ims_user_id":9985776,"token_type":"Bearer","expires_in":3600,"expiration":1706075059,"scope":"ibm openid"}
access_tokenを使用してバケット内のデータをリスト化します。endpoint、bucket-name、tokenは適切なものを代入してください。
$ curl "https://(endpoint)/(bucket-name)"
-H "Authorization: bearer (token)"
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Name>(bucket-name)
...
<Contents><Key>test1.png</Key><LastModified>2024-01-24T05:08:22.881Z</LastModified>...<StorageClass>STANDARD</StorageClass></Contents>
<Contents><Key>test2.png</Key><LastModified>2024-01-24T05:10:20.423Z</LastModified>...<StorageClass>ACCELERATED</StorageClass></Contents>
<Contents><Key>test3.png</Key><LastModified>2024-01-24T05:10:44.672Z</LastModified>...<StorageClass>ACCELERATED</StorageClass></Contents></ListBucketResult>%
APIヘッダーのStorageClass
を確認するとアーカイブしていないデータはSTANDARD
となっているのに対し、アーカイブ済み・復元中データはACCELERATED
となっていることが確認できます。
より詳細なICOSのAPIについてはDocs : cURL の使用をご確認ください。