OSSバージョン管理機能

作成日:2019-12-07

Alibaba Cloud オブジェクトストレージサービス(OSS)にバージョン管理機能が増えました❗️"

はじめに

本記事では、Alibaba Cloud の Object Storage Service(OSS)でオブジェクトのバージョン管理機能が実装されましたので、それをご紹介します。

バージョン管理機能の概要

バージョン管理機能は同一のKEY(/path/to/ファイル名)を持つオブジェクトを更新する際の動作に影響します。

バージョン管理機能が無効化されている場合、 オブジェクトの識別は`KEY`のみで行うことになります。 オブジェクトの更新時には以下の様な形になり元のオブジェクトは無くなります

img

バージョン管理機能が有効化されている場合、 オブジェクトに`VERSIONID`が付与され、`VERSIONID`と`KEY`でオブジェクトを識別できる様になります。 オブジェクトの更新時には、一意な`VERSIONID`が付与された同じ`KEY`のオブジェクトが生成されることになります。 以下の様な形になり元のオブジェクトは保持されます

img

機能としては以上の様にシンプルなので実際の設定などを見ていきたいと思います。

バージョン管理機能の有効化

設定の方法は簡単でバケットの作成時にVersioningを有効化すれば利用が可能です。

img

既に作成済みのバケットでバージョン管理機能を使用したい場合、基本設定から有効化が可能です。

img

img

設定状況はCLIから確認することも可能です。
aliyun oss bucket-versioning --method get oss://bucket-name
-e oss-ap-southeast-3.aliyuncs.comはOSSのエンドポイントに合わせての指定が必要です。

表示される結果がbucket versioning status:Enabledとなっていればバージョン管理機能が有効化されています。

img

動作検証

とりあえず、適当にテキストファイルを作成してOSSにアップロードしてみます。

img

バージョン管理を有効化バケットのファイル一覧に見慣れぬ表示が増えています。

img

オブジェクトの履歴バージョンを表示するのチェックを入れると少し画面の表示が変わります。
(Latest Version) という表示が見えると思います。

img

テキストの内容をVer.2に変えてファイルをアップロードしてみます。

img

想定どおり複数バージョンのバージョニングテスト.txtが存在しています。

img

CLIでも確認してみたいと思います。
aliyun oss ls oss://bucket-name --all-versions

GUIの画面と同様に2つのオブジェクトが表示されます。
VERSIONIDがオブジェクトを一意に識別するためのIDです。
IS-LATESTtrueなのがカレントバージョンのファイルになります。

img

この状態でCLIからカレントバージョンのファイルをcatしてみます。
aliyun oss cat oss://bucket-name/object

img

結果はVer.2と後からアップロードしたオブジェクトの内容が表示されます。

では、次に最初にアップロードされた方のオブジェクトを指定してcatしてみます。
カレント以外のオブジェクトの指定には--version-idのオプションを使用します。

aliyun oss cat oss://bucket-name/object --version-id VERSIONID

img

想定通りVer.1と表示され複数のバージョンのオブジェクトを保持していることが確認できました。

一応、前のバージョンのファイルをダウンロードしてみます。

img

ファイルを開くと、ちゃんとVer.1と書かれたファイルが取得できました。

img

ちなみに、注意点ですがこの状態はOSS的には以下のように認識されています。

複数バージョン保持すると言うことはその分のリソースを使用します。料金的にも複数バージョン保存分の料金が掛かります。 バケット単位での設定になるので有効化の必要性の検討やバケット設計は確りと行ってご利用ください。

img

バージョン管理機能の停止

バージョン管理を有効化した後に、本機能を無効化することが出来ません。
一時停止でそれ以降の新しいバージョンの作成を止めることは可能です。
ただし、既存オブジェクトのバージョンは一時停止後も保持されます。

img

実際に停止してみると以下のようになります。
CLIの結果としてはbucket versioning status:Suspendedが帰ってきます。

img

この状態でVer.3にしたファイルをアップロードしてみます。

img

既存オブジェクトのバージョンは保持されるので3つのオブジェクトが表示されますが、最新のオブジェクトにはVERSIONIDが付与されていません。

img

カレントのファイルyの内容を確認するとVer.3が表示されます。

img

この状態で、Ver.4に更新したファイルを再度アップロードすると・・・

img

4つ目のオブジェクトは作成されず、Latest Versionが上書きされました。
※バージョン管理機能を有効化する前と同じ動きになります。

img

試しに、カレントファイルの内容を確認するとVer.4が表示されているので新しいオブジェクトに上書きされていることが確認できます。

なお、一時停止状態でも保存済みの過去バージョンのオブジェクトは正常に取得できます。

img

最後に

本記事では、OSSのバージョン管理機能を軽くご紹介しました。皆様もOSSを利用する際はご参考に頂ければ幸いです。

松田 悦洋
この記事を書いた人
松田 悦洋
Github Icon
インフラからアプリまでのシステム基盤のアーキテクトを経てクラウドのアーキテクトへ、AWS、Azure、Cloudflare などのサービスやオープンソース関連も嗜みます。2019年1月にソフトバンクへ入社、2020年より Alibaba Cloud MVP。
Close

Alibaba Cloudを始めてみましょう

ソフトバンクは、Alibaba Cloudのアカウント開設から、サービス展開までをお手伝いします。
Hatena