Alibaba Cloud Object Storage Service(OSS)にバージョン管理機能が増えました!

2019年12月7日掲載

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

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

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

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

目次

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

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

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

バージョン管理機能が有効化されている場合
オブジェクトにVERSIONIDが付与され、VERSIONIDKEYでオブジェクトを識別できる様になります。
オブジェクトの更新時には、一意な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-LATESTtrueなのがカレントバージョンのファイルになります。

この状態で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が表示されているので新しいオブジェクトに上書きされていることが確認できます。

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

おわりに

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

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

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

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

関連サービス

Alibaba Cloud

おすすめの記事

条件に該当するページがございません