バケットのバージョン管理を一時停止すると、OSS はその後のアップロードに対して新しいバージョンを作成しなくなります。既存のバージョンには影響がなく、バージョン管理の一時停止後も、バージョン ID を指定することで読み取りおよび削除が可能です。
本トピックでは、バージョン管理が一時停止されたバケットにおけるアップロード、ダウンロード、および削除操作の動作について説明します。
オブジェクトのアップロード
バージョン管理が一時停止されたバケットにアップロードされるすべてのオブジェクトは、ID が null のバージョンとして保存されます。各オブジェクトは null バージョンを最大 1 つしか持てないため、既に存在する状態によって動作が異なります。
| 既存の状態 | アップロード後の動作 |
|---|---|
| 既存のバージョンがない場合 | OSS が ID null の新しいバージョンを作成します。 |
非 null の ID を持つ既存のバージョンがある場合(例: 111111) | アップロードされたオブジェクトが現在のバージョン(ID null)となり、以前のバージョン(111111)は保持されます。 |
null バージョンが既に存在する場合 | null バージョンが上書きされます — バージョン ID は引き続き null のままですが、オブジェクトの内容は新しいアップロードで置き換えられます。 |
シナリオ 1:既存のバージョンがない場合
PutObject を使用して、バージョン管理が一時停止されたバケットにオブジェクトをアップロードすると、OSS はそのオブジェクトを null バージョンとして保存します。

シナリオ 2:非 null の ID を持つ既存のバージョンがある場合
バケットに ID 111111 のバージョンが存在し、同じ名前のオブジェクトをアップロードした場合、アップロードされたオブジェクトが現在のバージョン(ID null)となり、バージョン 111111 は以前のバージョンとして保存されます。

シナリオ 3:既に null バージョンが存在する場合
バケットにすでに null バージョンが存在し、同じ名前のオブジェクトをアップロードした場合、既存の null バージョンが完全に上書きされます。

バージョン管理が一時停止されたバケットにオブジェクトをアップロードするには、ossutil の cp(オブジェクトのアップロード) コマンド、または以下の SDK のいずれかを使用します:OSS SDK for Java、OSS SDK for PHP、OSS SDK for Node.js、OSS SDK for Python、OSS SDK for .NET、OSS SDK for Go、および OSS SDK for C++。
オブジェクトのダウンロード
ダウンロード時の動作は、GetObject リクエストでバージョン ID を指定するかどうかによって決まります。
バージョン ID を指定しない場合: OSS は現在のバージョンを返します。バージョン管理が一時停止されたバケットでは、現在のバージョンの ID は通常
nullです。バージョン ID を指定した場合: OSS は、それが現在のバージョンであるかどうかに関わらず、指定された正確なバージョンを返します。
シナリオ 1:バージョン ID を指定しない場合
現在のバージョン(ID null)が返されます。

シナリオ 2:バージョン ID を指定した場合
指定された ID のバージョン(例: 222222)が返されます。

バージョン管理が一時停止されたバケットからオブジェクトをダウンロードするには、ossutil の cp(オブジェクトのダウンロード) コマンド、または以下の SDK のいずれかを使用します:OSS SDK for Java、OSS SDK for PHP、OSS SDK for Node.js、OSS SDK for Python、OSS SDK for .NET、OSS SDK for Go、および OSS SDK for C++。
オブジェクトの削除
バージョン管理が一時停止されたバケットにおける DeleteObject リクエストは、以下のルールに従います。
バージョン ID を指定しない場合: OSS は、新しい現在のバージョンとして ID
nullの削除マーカーを挿入します。オブジェクトにすでにnullバージョンが存在する場合は、そのバージョンが削除マーカーで置き換えられます(オブジェクトはnullバージョンを 1 つしか持てないため)。以前の非 null バージョンは保持されます。バージョン ID を指定した場合: OSS は、その特定のバージョンを完全に削除します。
シナリオ 1:現在のバージョン ID が null でないオブジェクトの削除
OSS は、現在のバージョンとして ID null の削除マーカーを追加します。既存の非 null バージョンは以前のバージョンになります。

シナリオ 2:現在のバージョン ID が null であるオブジェクトの削除
OSS は、ID null の削除マーカーを追加し、既存の null バージョンを上書きします。オブジェクトは null バージョンを 1 つしか持てないため、元の null バージョンが置き換えられます。

シナリオ 3:指定されたバージョンの削除
DeleteObject リクエストでバージョン ID(例: 333333)を指定した場合、そのバージョンが完全に削除されます。

バージョン管理が一時停止されたバケットからオブジェクトを削除するには、ossutil の rm コマンド、または以下の SDK のいずれかを使用します:OSS SDK for Java、OSS SDK for PHP、OSS SDK for Node.js、OSS SDK for Python、OSS SDK for .NET、OSS SDK for Go、および OSS SDK for C++。