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

こんにちは。
ソリューションアーキテクトの松田(@MatYoshr)です。

本記事は Alibaba Cloud Advent Calendar 2019 7日目の記事になります。
本記事は Alibaba Cloud 国際サイトの内容をベースに説明しています。

Alibaba Cloud の Object Storage Service(OSS)で先日のクロスリージョンレプリケーションに続き、オブジェクトのバージョン管理機能が一部リージョンで利用出来るようになったのはお気づきでしょうか😁

www.sbcloud.co.jp

まだ、ごく一部のリージョンでのみ利用可能な機能ですが、東京リージョンへのリリースの期待も込めてご紹介をさせて頂きたいと思います。

f:id:sbc_y_matsuda:20191021120337p:plain

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

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

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

f:id:sbc_y_matsuda:20191205205341p:plain

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

f:id:sbc_y_matsuda:20191205211225p:plain

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

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

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

f:id:sbc_y_matsuda:20191129162043p:plain

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

f:id:sbc_y_matsuda:20191129184956p:plain

f:id:sbc_y_matsuda:20191129185228p:plain

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

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

f:id:sbc_y_matsuda:20191202012423p:plain

動作検証

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

f:id:sbc_y_matsuda:20191129191045p:plain

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

f:id:sbc_y_matsuda:20191129191415p:plain

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

f:id:sbc_y_matsuda:20191129191822p:plain

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

f:id:sbc_y_matsuda:20191129192120p:plain

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

f:id:sbc_y_matsuda:20191129192411p:plain

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

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

f:id:sbc_y_matsuda:20191202013411p:plain

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

f:id:sbc_y_matsuda:20191202014254p:plain

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

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

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

f:id:sbc_y_matsuda:20191202014742p:plain

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

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

f:id:sbc_y_matsuda:20191129193110p:plain

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

f:id:sbc_y_matsuda:20191129193452p:plain

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

f:id:sbc_y_matsuda:20191202015454p:plain

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

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

f:id:sbc_y_matsuda:20191202141518p:plain

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

f:id:sbc_y_matsuda:20191202152516p:plain

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

f:id:sbc_y_matsuda:20191202152732p:plain

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

f:id:sbc_y_matsuda:20191202153047p:plain

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

f:id:sbc_y_matsuda:20191202153326p:plain

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

f:id:sbc_y_matsuda:20191202153448p:plain

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

f:id:sbc_y_matsuda:20191202153838p:plain

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

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

f:id:sbc_y_matsuda:20191202154325p:plain

おわりに

ちなみに、みんなが気になる何処で使えるのか?という点ですが、2019年11月末時点で利用可能なリージョンは以下の5つです。

  • 中国本土(青島)
  • 中国本土(北京) 2020/01 追加
  • シンガポール 2020/01 追加
  • インド(ムンバイ)
  • マレーシア(クアラルンプール)
  • オーストラリア(シドニー)
  • ドイツ(フランクフルト)
  • イギリス(ロンドン) 2020/01 追加
  • 米国(バージニア) 2019/12/23 追加
  • 米国(シリコンバレー) 2020/01 追加

東京が無いどころか、杭州も上海もシンガポールも入っていないという謎😅
※シンガポールは追加されました

順次、各リージョンへ展開されていくと思いますので、状況をウォッチしていきたいと思います。

関連記事

www.sbcloud.co.jp https://www.sbcloud.co.jp/entry/2019/10/21/oss-crr www.sbcloud.co.jp

Author Profile

https://secure.gravatar.com/avatar/b00b5531fbdbc674e9f7c685a1ed32c1?s=800&d=identicon

松田悦洋(@MatYoshr)
SBクラウド株式会社 Alibaba Cloud Solution Architect

Alibaba以外にもAWS、Azure、GCPなどクラウド全般が好きです
  GitHub   Qiita