すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:データ復旧とバージョン管理のためのバージョン管理の有効化

最終更新日:Apr 08, 2024

バケットのバージョン管理を有効にして、バケットに保存されているオブジェクトを保護できます。 バージョン管理が有効なバケットに保存されているオブジェクトを上書きまたは削除すると、オブジェクトは以前のバージョンとしてバケットに保存されます。 バケットのバージョン管理を有効にすると、バケット内のオブジェクトを以前のバージョンに復元して、データが誤って上書きまたは削除されるのを防ぐことができます。

シナリオ

データのセキュリティを確保するために、次のシナリオでバージョン管理を有効にすることを推奨します。

  • 削除されたデータを回復する

    OSSはごみ箱機能を提供していません。 バージョン管理機能を使用して、削除されたデータを復元できます。

  • 上書きされたデータを回復する

    オンライン共同ドキュメントやオンラインストレージに格納されたドキュメントなど、変更が頻繁に行われるシナリオでは、多数の一時バージョンが作成されます。 バージョン管理機能を使用して、バケットに保存されているオブジェクトの特定のバージョンを復元できます。

使用上の注意

  • 課金

    バケットのバージョン管理を有効にすると、バケット内のすべてのバージョンのオブジェクトのストレージに対して課金されます。 ストレージコストを削減するために、必要がなくなった以前のバージョンを削除するようにバケットのライフサイクルルールを設定することを推奨します。 詳細については、「概要」をご参照ください。 以前のバージョンのオブジェクトをダウンロードしたり、以前のバージョンにオブジェクトを復元したりすると、リクエスト料金とトラフィック料金が課金されます。 詳細については、「課金の概要」をご参照ください。

  • 必要な権限。

    バケットのバージョン管理を構成できるのは、oss:PutBucketVersioning権限を持つバケット所有者またはRAMユーザーのみです。

  • 機能の競合

    • バケットにバージョン管理ポリシーと保持ポリシーを同時に構成することはできません。

    • バージョン管理が有効なバケットにデータをアップロードするリクエストのx-oss-forbid-overwriteヘッダーは有効になりません。 詳細については、「リクエストヘッダー」をご参照ください。

  • バージョン管理が有効なバケットのOSS-HDFS

    バケットのOSS-HDFSとバージョン管理を有効にしないでください。

    バケットのOSS-HDFSとバージョン管理が有効になっている場合、期待どおりに機能しないOSS-HDFSがあります。 OSS-HDFSの安定性を確保するには、早期にバージョン管理を一時停止し、ライフサイクルルールを設定して削除マーカーを削除する必要があります。

バージョン管理の状態

バケットは、無効、有効、および一時停止のいずれかのバージョン管理状態にすることができます。

  • デフォルトでは、バケットのバージョン管理状態は無効になっています。 バケットのバージョン管理が有効になった後、バケットのバージョン管理状態を無効にロールバックすることはできません。 ただし、バージョン管理が有効になっているバケットのバージョン管理を一時停止できます。

  • バージョン管理が有効になっているバケットにオブジェクトがアップロードされると、オブジェクトのグローバルに一意なバージョンIDとしてランダムな文字列が生成されます。 バージョン管理が有効なバケット内のオブジェクトに対する操作の詳細については、「バージョン管理が有効なバケット内のオブジェクトの管理」をご参照ください。

  • バージョン管理が一時停止されているバケットにオブジェクトがアップロードされると、OSSはオブジェクトのバージョンIDとして「null」文字列を生成します。 バージョン管理が中断されたバケット内のオブジェクトに対する操作の詳細については、「バージョン管理が中断されたバケット内のオブジェクトの管理」をご参照ください。

説明

バージョン管理が有効なバケットには、オブジェクトのすべてのバージョンが格納されます。 これらのバージョンでは、ストレージスペースが消費され、ストレージ料金が発生します。 ライフサイクルルールを設定して、バージョンのストレージクラスを低頻度アクセス (IA) に変更するか、不要になった以前のバージョンをアーカイブまたは削除することをお勧めします。 これにより、ストレージコストが削減されます。 詳細については、「バージョン管理が有効なバケットの最終変更時刻に基づいてライフサイクルルールを設定し、ストレージコストを削減する」をご参照ください。

データ保護

次の表は、バージョン管理のデータ保護メカニズムを理解するために、さまざまなバージョン管理状態のバケット内のデータの削除および上書きをOSSが処理する方法を示しています。

バージョン管理の状態

オブジェクトの上書き

オブジェクト削除

無効

既存のオブジェクトは上書きされ、復元できません。

オブジェクトは削除され、OSSに保存されなくなります。

Enabled

一意のIDを持つ新しいバージョンがオブジェクトに対して生成されます。 既存のオブジェクトは以前のバージョンとして保存されます。

グローバルに一意のバージョンIDを持つ削除マーカーが、現在のバージョンとしてオブジェクトに追加されます。 既存のオブジェクトは以前のバージョンとして保存されます。

Suspended (中断)

バージョンIDがnullの新しいバージョンがオブジェクトに対して生成されます。

オブジェクトにバージョンIDがnullの以前のバージョンまたは削除マーカーが既にある場合、以前のバージョンまたは削除マーカーは新しいnullバージョンで上書きされます。 バージョンIDがnullでない他の以前のバージョンまたは削除マーカーは影響を受けません。

バージョンIDがnullの削除マーカーがオブジェクトに追加されます。

オブジェクトにバージョンIDがnullの以前のバージョンまたは削除マーカーが既にある場合、以前のバージョンまたは削除マーカーは新しい削除マーカーで上書きされます。 バージョンIDがnullでない他の以前のバージョンまたは削除マーカーは影響を受けません。

次の図は、既存のオブジェクトと同じ名前のオブジェクトがアップロードされた場合、またはバージョン管理が有効または一時停止されているバケットからオブジェクトが削除された場合に、OSSがデータを処理する方法を示しています。 読みやすくするために、図中のすべてのバージョンIDは単純な形式である。

  • バージョン管理が有効なバケット内のオブジェクトの上書き

    バージョン管理が有効なバケットにオブジェクトを繰り返しアップロードすると、オブジェクトはアップロードごとに上書きされます。 オブジェクトが上書きされるたびに、オブジェクトに対して一意のバージョンIDを持つバージョンが生成されます。

    1

  • バージョン管理が有効なバケットからオブジェクトを削除する

    バージョン管理が有効なバケットからオブジェクトを削除すると、オブジェクトを完全に削除するのではなく、オブジェクトの現在のバージョンとしてオブジェクトに削除マーカーが追加されます。 オブジェクトの以前のバージョンは削除されません。 削除マーカーを追加した後に同じ名前のオブジェクトをアップロードすると、一意のバージョンIDを持つ新しいバージョンが現在のバージョンとして追加されます。

    2

  • バージョン管理が中断されたバケット内のオブジェクトの上書き

    バージョン管理が中断されているバケット内の既存のオブジェクトと同じ名前のオブジェクトをアップロードすると、バージョンIDがnullの新しいバージョンがバケットに追加され、オブジェクトの以前のバージョンが保持されます。 同じ名前の別のオブジェクトを再度バケットにアップロードすると、バージョンIDがnullの新しいバージョンが以前のnullバージョンを上書きします。

    3

  • バージョン管理が中断されたバケットからオブジェクトを削除する

    バージョン管理が一時停止されているバケットからオブジェクトを削除すると、このオブジェクトを完全に削除するのではなく、オブジェクトの現在のバージョンとしてオブジェクトに削除マーカーが追加されます。 オブジェクトの以前のバージョンは削除されません。

    4

要約すると、削除および上書きされたデータは、バージョン管理が有効またはバージョン管理が一時停止されたバケットに以前のバージョンとして保存されます。 バケット内のオブジェクトを以前のバージョンに復元して、データが誤って上書きまたは削除されるのを防ぐことができます。

バージョン管理の有効化

OSS コンソールの使用

バケットのバージョン管理が有効になっている場合、OSSはバケットに保存されているオブジェクトのバージョンごとに一意のIDを指定します。

  • バケットの作成時にバージョン管理を有効にする

    1. OSS コンソールにログインします。

    2. 左側のナビゲーションウィンドウで、バケットリスト をクリックします。 [バケット] ページで、[バケットの作成] をクリックします。

    3. [バケットの作成] パネルで、パラメーターを設定します。

      [バケットの機能] セクションで、バージョン管理をオンにします。 その他のパラメーターの設定方法の詳細については、「バケットの作成」をご参照ください。

    4. [OK] をクリックします。

  • 既存のバケットのバージョン管理を有効化

    1. 左側のナビゲーションウィンドウで、バケットリスト をクリックします。 [バケット] ページで、目的のバケットを見つけてクリックします。

    2. 左側のナビゲーションツリーで、コンテンツセキュリティ > バージョン管理 を選択します。

    3. バージョン管理 ページで、有効化 をクリックします。

    4. 表示されたメッセージボックスで、OK をクリックします。

バージョン管理を有効にした後、バケット内のオブジェクトのすべてのバージョンを表示するには、オブジェクト ページの 以前のバージョン の右側にある 表示 をクリックします。 現在のバージョンのオブジェクトのみを表示するには、以前のバージョン の右側にある 非表示 をクリックします。 以前のバージョンのオブジェクトを非表示にしても、オブジェクトリストのパフォーマンスは向上しません。 オブジェクトの一覧表示が遅い場合は、「FAQ」をご参照ください。

OSS SDKの使用

次のサンプルコードは、一般的なプログラミング言語のOSS SDKを使用してバケットのバージョン管理を有効にする方法の例を示しています。 他のプログラミング言語のOSS SDKを使用してバケットのバージョン管理を有効にする方法の詳細については、「概要」をご参照ください。

com.aliyun.oss.ClientExceptionをインポートします。com.aliyun.oss.OSSをインポートします。impor t com.aliyun.oss.com mon.auth.*;
com.aliyun.oss.OSSClientBuilderをインポートします。com.aliyun.oss.OSSExceptionをインポートします。com.aliyun.oss.mo delをインポートします。*;

public classデモ {
    public static void main(String[] args) throws Exception {
        // この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // バケットの名前を指定します。 例: examplebucket. 
        String bucketName = "examplebucket";

        // Create an OSSClient instance. 
        OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

        try {
            // バージョン管理を有効にします。 
            BucketVersioningConfiguration configuration = new BucketVersioningConfiguration();
            configuration.setStatus(BucketVersioningConfiguration.ENABLED);
            SetBucketVersioningRequest request = new SetBucketVersioningRequest(bucketName, configuration);
            ossClient.setBucketVersioning(request);
        } catch (Exception e) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "しかし、何らかの理由でエラー応答で拒否されました。");
            System.out.println("エラーメッセージ:" + oe.getErrorMessage());
            System.out.println("エラーコード:" + oe.getErrorCode());
            System.out.println("リクエストID:" + oe.getRequestId());
            System.out.println("ホストID:" + oe.getHostId());
        } catch (ClientException e) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + 「ネットワークにアクセスできないなど」;
            System.out.println("エラーメッセージ:" + ce.getMessage());
        } 最後に{
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
} 
<?php
if (is_file(__DIR__) 。 '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__) 。 '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}

OSS\OssClientを使用します。OSS\Core\OssExceptionを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
$accessKeyId = getenv("OSS_ACCESS_KEY_ID");
$accessKeySecret = getenv("OSS_ACCESS_KEY_SECRET");
// この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 
$end point = "https://oss-cn-hangzhou.aliyuncs.com";
$bucket= "yourBucketName";

$ossClient = new OssClient($accessKeyId, $accessKeySecret, $end point);

try {
    // バージョン管理を有効にします。 
    $ossClient->putBucketVersioning($bucket、"Enabled");
} catch (OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage()) 。 "\n");
    戻ります。}

print(__FUNCTION__) 。 ": OK" 。 "\n"); 
const OSS = require("ali-oss");

const client = new OSS({
  // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 
  リージョン: "oss-cn-hangzhou" 、
  // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
  accessKeyId: process.env.OSS_ACCESS_KEY_ID、
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、
  // バケットの名前を指定します。 例: examplebucket. 
  bucket: "examplebucket" 、});

async関数putBucketVersioning() {
  // バージョン管理を有効にします。 
  const status = "Enabled";
  const result = await client.putBucketVersioning("examplebucket" 、status);
  console.log (結果);
}
putBucketVersioning();
# -*- coding: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
oss2.modelsからBucketVersioningConfigをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
# バケットの名前を指定します。 
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'yourBucketName')

# バケットのバージョン管理設定を初期化します。 
config = BucketVersioningConfig()
# バージョン管理を有効にします。 
config.status = oss2.BUCKET_VERSIONING_ENABLE

result = bucket.put_bucket_versioning(config)
# HTTPステータスコードを表示します。 
Aliyun.OSSを使用して印刷 ('http response code:', result.status)
;
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
var endpoint = "yourEndpoint";
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// バケットの名前を指定します。 例: examplebucket. 
var bucketName = "examplebucket";
// OSSClientインスタンスを初期化します。 
var client = new OssClient (エンドポイント、accessKeyId、accessKeySecret);
トライ
{
    // バケットのバージョン管理ステータスを [有効] に設定します。 
    client.SetBucketVersioning(new SetBucketVersioningRequest(bucketName, VersioningStatus.Enabled));
    Console.WriteLine("バケットバージョンの作成成功");
}
キャッチ (例外ex)
{
    Console.WriteLine("バケットバージョンの作成に失敗しました。 {0}"、例えばメッセージ);
} 
パッケージメイン

import (import (import)
  "fmt"
  "os"

  「github.com/aliyun/aliyun-oss-go-sdk/oss」
)

func main() {
    /// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err! =nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Create an OSSClient instance. 
    // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 
    client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
    if err! =nil {
       fmt.Println("Error:", err)
       os.Exit(-1)
  }

  // Create a bucket. 
  // バケットの名前を指定します。 
  err = client.CreateBucket("yourBucketName")
  if err! =nil {
    fmt.Println("Error:", err)
    os.Exit(-1)
  }
  // バージョン管理状態を有効に設定します。 
  config := oss.VersioningConfig{Status: "Enabled"}
  err = client.SetBucketVersioning("yourBucketName", config)
  if err! =nil {
    fmt.Println("Error:", err)
    os.Exit(-1)
  }
} 
#include <alibabacloud/oss/OssClient.h>
名前空間listaCloud::OSSを使用します。int main(void)
{
    /* OSSへのアクセスに使用されるアカウントに関する情報を初期化します。 */
            
    /* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 */
    std::string Endpoint = "yourEndpoint";
    /* バケットの名前を指定します。 例: examplebucket. */
    std::string BucketName = "examplebucket";

    /* ネットワークリソースなどのリソースを初期化します。 */
    InitializeSdk();

    ClientConfiguration conf;
    /* 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClientクライアント (Endpoint, credentialsProvider, conf);

    /* バージョン管理状態を有効に設定します。 */
    SetBucketVersioningRequest setrequest(BucketName, VersioningStatus::Enabled);
    auto outcome = client.SetBucketVersioning(setrequest);

    if (!outcome.isSuccess()) {
        /* 例外を処理します。 */
        std::cout << "SetBucketVersioning fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }

    /* ネットワークリソースなどのリソースをリリースします。 */
    ShutdownSdk();
    0を返します。} 

ossutil の使用

ossutilを使用してバージョン管理を有効にできます。 詳細については、「バケットのバージョン管理ステータスの設定」をご参照ください。

OSS APIの使用

ビジネスで高度なカスタマイズが必要な場合は、RESTful APIを直接呼び出すことができます。 APIを直接呼び出すには、コードに署名計算を含める必要があります。 詳細については、「PutBucketVersioning」をご参照ください。

バージョン管理を一時停止する

OSS コンソールの使用

バージョン管理されたバケットのバージョン管理を一時停止して、OSSによるオブジェクトの新しいバージョンの生成を停止できます。 バージョン管理が一時停止されたバケット内のオブジェクトに対して新しいバージョンが生成された場合、OSSは新しいバージョンのIDをnullに設定し、オブジェクトの以前のバージョンを保持します。

バケットのバージョン管理を一時停止するには、次の手順を実行します。

  1. 左側のナビゲーションウィンドウで、バケットリスト をクリックします。 [バケット] ページで、目的のバケットを見つけてクリックします。

  2. 左側のナビゲーションツリーで、コンテンツセキュリティ > バージョン管理 を選択します。

  3. バージョン管理 ページで、一時停止 をクリックします。

  4. 表示されたメッセージボックスで、OK をクリックします。

OSS SDKの使用

次のサンプルコードは、一般的なプログラミング言語のOSS SDKを使用してバケットのバージョン管理を一時停止する方法の例を示しています。 他のプログラミング言語のOSS SDKを使用してバケットのバージョン管理を一時停止する方法の詳細については、「概要」をご参照ください。

com.aliyun.oss.ClientExceptionをインポートします。com.aliyun.oss.OSSをインポートします。impor t com.aliyun.oss.com mon.auth.*;
com.aliyun.oss.OSSClientBuilderをインポートします。com.aliyun.oss.OSSExceptionをインポートします。com.aliyun.oss.mo delをインポートします。*;

public classデモ {
    public static void main(String[] args) throws Exception {
        // この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // バケットの名前を指定します。 例: examplebucket. 
        String bucketName = "examplebucket";

        // Create an OSSClient instance. 
        OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

        try {
            // バージョン管理を中断します。 
            BucketVersioningConfiguration configuration = new BucketVersioningConfiguration();
            configuration.setStatus(BucketVersioningConfiguration.SUSPENDED);
            SetBucketVersioningRequest request = new SetBucketVersioningRequest(bucketName, configuration);
            ossClient.setBucketVersioning(request);
        } catch (Exception e) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "しかし、何らかの理由でエラー応答で拒否されました。");
            System.out.println("エラーメッセージ:" + oe.getErrorMessage());
            System.out.println("エラーコード:" + oe.getErrorCode());
            System.out.println("リクエストID:" + oe.getRequestId());
            System.out.println("ホストID:" + oe.getHostId());
        } catch (ClientException e) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + 「ネットワークにアクセスできないなど」;
            System.out.println("エラーメッセージ:" + ce.getMessage());
        } 最後に{
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
} 
<?php
if (is_file(__DIR__) 。 '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__) 。 '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}

OSS\OssClientを使用します。OSS\Core\OssExceptionを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
$accessKeyId = getenv("OSS_ACCESS_KEY_ID");
$accessKeySecret = getenv("OSS_ACCESS_KEY_SECRET");
// この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 
$end point = "https://oss-cn-hangzhou.aliyuncs.com";
$bucket= "yourBucketName";

$ossClient = new OssClient($accessKeyId, $accessKeySecret, $end point);

try {
    // バージョン管理を中断します。 
    $ossClient->putBucketVersioning($bucket、"Suspended");
} catch (OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage()) 。 "\n");
    戻ります。}

print(__FUNCTION__) 。 ": OK" 。 "\n"); 
const OSS = require("ali-oss");

const client = new OSS({
  // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 
  リージョン: "oss-cn-hangzhou" 、
  // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
  accessKeyId: process.env.OSS_ACCESS_KEY_ID、
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、
  // バケットの名前を指定します。 例: examplebucket. 
  bucket: "examplebucket" 、});

async関数putBucketVersioning() {
  // バージョン管理を中断します。 
  const status = "中断";
  const result = await client.putBucketVersioning("examplebucket" 、status);
  console.log (結果);
}
putBucketVersioning();
# -*- coding: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
oss2.modelsからBucketVersioningConfigをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
# バケットの名前を指定します。 
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'yourBucketName')

# バケットのバージョン管理設定を初期化します。 
config = BucketVersioningConfig()
# バージョン管理を一時停止します。 
config.status = oss2.BUCKET_VERSIONING_SUSPENDED

result = bucket.put_bucket_versioning(config)
# HTTPステータスコードを表示します。 
Aliyun.OSSを使用して印刷 ('http response code:', result.status)
;
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
var endpoint = "yourEndpoint";
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// バケットの名前を指定します。 例: examplebucket. 
var bucketName = "examplebucket";
// OSSClientインスタンスを初期化します。 
var client = new OssClient (エンドポイント、accessKeyId、accessKeySecret);
トライ
{
    // バケットのバージョン管理状態をSuspendedに設定します。 
    client.SetBucketVersioning(new SetBucketVersioningRequest(bucketName, VersioningStatus.Suspended));
    Console.WriteLine("バケットバージョンの作成成功");
}
キャッチ (例外ex)
{
    Console.WriteLine("バケットバージョンの作成に失敗しました。 {0}"、例えばメッセージ);
} 
パッケージメイン

import (import (import)
  "fmt"
  "os"

  「github.com/aliyun/aliyun-oss-go-sdk/oss」
)

func main() {
    /// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err! =nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Create an OSSClient instance. 
    // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 
    client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
    if err! =nil {
       fmt.Println("Error:", err)
       os.Exit(-1)
  }

  // Create a bucket. 
  // バケットの名前を指定します。 
  err = client.CreateBucket("yourBucketName")
  if err! =nil {
    fmt.Println("Error:", err)
    os.Exit(-1)
  }
  // バージョン管理を中断します。 
  config := oss.VersioningConfig {ステータス: "Suspended"}
  err = client.SetBucketVersioning("yourBucketName", config)
  if err! =nil {
    fmt.Println("Error:", err)
    os.Exit(-1)
  }
} 
#include <alibabacloud/oss/OssClient.h>
名前空間listaCloud::OSSを使用します。int main(void)
{
    /* OSSへのアクセスに使用されるアカウントに関する情報を初期化します。 */
            
    /* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 */
    std::string Endpoint = "yourEndpoint";
    /* バケットの名前を指定します。 例: examplebucket. */
    std::string BucketName = "examplebucket";

    /* ネットワークリソースなどのリソースを初期化します。 */
    InitializeSdk();

    ClientConfiguration conf;
    /* 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClientクライアント (Endpoint, credentialsProvider, conf);

    /* バージョン管理状態をSuspendedに設定します。 */
    SetBucketVersioningRequest setrequest(BucketName, VersioningStatus::Suspended);
    auto outcome = client.SetBucketVersioning(setrequest);

    if (!outcome.isSuccess()) {
        /* 例外を処理します。 */
        std::cout << "SetBucketVersioning fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }

    /* ネットワークリソースなどのリソースをリリースします。 */
    ShutdownSdk();
    0を返します。} 

ossutil の使用

ossutilを使用してバージョン管理を一時停止できます。 詳細については、「バケットのバージョン管理ステータスの設定」をご参照ください。

OSS APIの使用

ビジネスで高度なカスタマイズが必要な場合は、RESTful APIを直接呼び出すことができます。 APIを直接呼び出すには、コードに署名計算を含める必要があります。 詳細については、「PutBucketVersioning」をご参照ください。

オブジェクトのバージョンを表示する

ossutilを使用して、オブジェクトのすべてのバージョンを表示できます。 たとえば、次のコマンドを実行して、examplebucketという名前のバケットのルートディレクトリにあるexample.txtという名前のオブジェクトのすべてのバージョンを表示できます。

. /ossutil64 ls oss:// examplebucket/example.txt -- すべてのバージョン

詳細については、「リストオブジェクト」をご参照ください。

オブジェクトの以前のバージョンを復元する

OSS コンソールの使用

バージョン管理が有効なバケットからオブジェクトを削除すると、オブジェクトを完全に削除するのではなく、オブジェクトの現在のバージョンとしてオブジェクトに削除マーカーが追加されます。 オブジェクトの以前のバージョンは削除されません。 OSSコンソールで以前のバージョンのオブジェクトを復元できます。

  1. 左側のナビゲーションウィンドウで、バケットリスト をクリックします。 [バケット] ページで、目的のバケットを見つけてクリックします。

  2. 左側のナビゲーションツリーで、ファイル > オブジェクト を選択します。

  3. オブジェクトリストの右上隅にある、以前のバージョン の右側にある 表示 をクリックします。

  4. 復元する以前のバージョンを選択し、回復 をクリックします。

  5. 表示されたメッセージボックスで、OK をクリックします。

ossutil の使用

revert-versioningコマンドを使用して、以前のバージョンのオブジェクトを復元できます。 詳細については、「revert-versioning」をご参照ください。