Alibaba Cloud オブジェクトストレージサービス(OSS)にバージョン管理機能が増えました❗️"
はじめに
本記事では、Alibaba Cloud の Object Storage Service(OSS)でオブジェクトのバージョン管理機能が実装されましたので、それをご紹介します。
バージョン管理機能の概要
バージョン管理機能は同一のKEY(/path/to/ファイル名)を持つオブジェクトを更新する際の動作に影響します。
バージョン管理機能が無効化されている場合、 オブジェクトの識別は`KEY`のみで行うことになります。 オブジェクトの更新時には以下の様な形になり元のオブジェクトは無くなります。バージョン管理機能が有効化されている場合、 オブジェクトに`VERSIONID`が付与され、`VERSIONID`と`KEY`でオブジェクトを識別できる様になります。 オブジェクトの更新時には、一意な`VERSIONID`が付与された同じ`KEY`のオブジェクトが生成されることになります。 以下の様な形になり元のオブジェクトは保持されます。機能としては以上の様にシンプルなので実際の設定などを見ていきたいと思います。
バージョン管理機能の有効化
設定の方法は簡単でバケットの作成時にVersioning
を有効化すれば利用が可能です。
既に作成済みのバケットでバージョン管理機能を使用したい場合、基本設定
から有効化が可能です。
設定状況はCLIから確認することも可能です。
aliyun oss bucket-versioning --method get oss://bucket-name
※-e oss-ap-southeast-3.aliyuncs.com
はOSSのエンドポイントに合わせての指定が必要です。
表示される結果がbucket versioning status:Enabled
となっていればバージョン管理機能が有効化されています。
動作検証
とりあえず、適当にテキストファイルを作成してOSSにアップロードしてみます。
バージョン管理を有効化バケットのファイル一覧に見慣れぬ表示が増えています。
オブジェクトの履歴バージョンを表示する
のチェックを入れると少し画面の表示が変わります。
(Latest Version)
という表示が見えると思います。
テキストの内容をVer.2
に変えてファイルをアップロードしてみます。
想定どおり複数バージョンのバージョニングテスト.txt
が存在しています。
CLIでも確認してみたいと思います。
aliyun oss ls oss://bucket-name --all-versions
GUIの画面と同様に2つのオブジェクトが表示されます。
VERSIONID
がオブジェクトを一意に識別するためのIDです。
IS-LATEST
がtrue
なのがカレントバージョンのファイルになります。
この状態でCLIからカレントバージョンのファイルをcat
してみます。
aliyun oss cat oss://bucket-name/object
結果はVer.2
と後からアップロードしたオブジェクトの内容が表示されます。
では、次に最初にアップロードされた方のオブジェクトを指定してcat
してみます。
カレント以外のオブジェクトの指定には--version-id
のオプションを使用します。
aliyun oss cat oss://bucket-name/object --version-id VERSIONID
想定通りVer.1
と表示され複数のバージョンのオブジェクトを保持していることが確認できました。
一応、前のバージョンのファイルをダウンロードしてみます。
ファイルを開くと、ちゃんとVer.1
と書かれたファイルが取得できました。
ちなみに、注意点ですがこの状態はOSS的には以下のように認識されています。
複数バージョン保持すると言うことはその分のリソースを使用します。料金的にも複数バージョン保存分の料金が掛かります。 バケット単位での設定になるので有効化の必要性の検討やバケット設計は確りと行ってご利用ください。バージョン管理機能の停止
バージョン管理を有効化した後に、本機能を無効化することが出来ません。
一時停止
でそれ以降の新しいバージョンの作成を止めることは可能です。
ただし、既存オブジェクトのバージョンは一時停止後も保持されます。
実際に停止してみると以下のようになります。
CLIの結果としてはbucket versioning status:Suspended
が帰ってきます。
この状態でVer.3
にしたファイルをアップロードしてみます。
既存オブジェクトのバージョンは保持されるので3つのオブジェクトが表示されますが、最新のオブジェクトにはVERSIONID
が付与されていません。
カレントのファイルyの内容を確認するとVer.3
が表示されます。
この状態で、Ver.4
に更新したファイルを再度アップロードすると・・・
4つ目のオブジェクトは作成されず、Latest Version
が上書きされました。
※バージョン管理機能を有効化する前と同じ動きになります。
試しに、カレントファイルの内容を確認するとVer.4
が表示されているので新しいオブジェクトに上書きされていることが確認できます。
なお、一時停止状態でも保存済みの過去バージョンのオブジェクトは正常に取得できます。
最後に
本記事では、OSSのバージョン管理機能を軽くご紹介しました。皆様もOSSを利用する際はご参考に頂ければ幸いです。