OSS には 3 つのストレージクラスがあり、その中でアーカイブストレージクラスの料金が最も低いです。 ただし、アクセスする場合は、アーカイブデータを読み取り可能な状態に復元する必要があります。 本ページでは、アーカイブストレージクラスのバケットの作成方法と使用方法について説明します。 3 つのストレージクラスの詳細については、「ストレージクラスの概要 (Introduction to storage classes)」をご参照ください。

アーカイブバケットの作成

アーカイブバケットの作成には、コンソール、API / SDK、コマンドラインツールのいずれかを使用します。

  • コンソールによるアーカイブバケットの作成

    コンソールでアーカイブバケットを作成するには、 「アーカイブストレージ」Storage Class で選択します。



  • API / SDK によるアーカイブバケットの作成

    Java SDK による 例は、以下のとおりです。

    OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
    CreateBucketRequest createBucketRequest=new CreateBucketRequest(bucketName);
    // Set the bucket ACL to public-read. The default ACL policy is private-read-write. createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
    // Set the storage class to Archive. The default storage class is Standard.
    createBucketRequest.setStorageClass(StorageClass.Archive);
    ossClient.createBucket(createBucketRequest);
    createBucketRequest.setStorageClass(StorageClass.Archive); は、作成したバケットのストレージクラスがアーカイブであることを示します。
  • OSS コマンドラインツールによるアーカイブバケットの作成
    ossutil の例は、以下のとおりです。
    ./ossutil mb oss://[bucket name] --storage-class=Archive
    [bucket name] は、該当するバケットに置き換えます。 -storage-classArchive に設定します。

アーカイブバケットの使用

  • アーカイブバケットへのデータのアップロード

    アーカイブバケットは、PutObject と MultipartUpload をサポートしていますが、 AppendObject はサポートしていません。 PutObject と MultipartUpload によってアップロードされたオブジェクトは、アーカイブバケットに直接保存できます。

  • アーカイブバケットからのデータのダウンロード

    アーカイブバケットに格納されているオブジェクトには、リアルタイムでアクセスできません。 最初に復元リクエストを開始してから、オブジェクトが使用可能になるまで 1 分間待つ必要があります。

    アーカイブオブジェクトの復元プロセスは次のとおりです。

    1. アーカイブオブジェクトは、最初は凍結状態にあります。
    2. 復元リクエストが送信されると、オブジェクトは復元中の状態になります。
    3. 1 分後、オブジェクトは復元済みの状態になり、読み取り可能になります。
    4. 復元済みの状態は、デフォルトで 1 日続き、最大 7 日間まで延長できます。 この期間が終了すると、オブジェクトは凍結状態に戻ります。

アーカイブオブジェクトを復元する際、コンソール、API / SDK、コマンドラインツールの内、どれを使用するかを選択できます。

  • コンソールによるアーカイブオブジェクトの復元

    コンソールでアーカイブオブジェクトを復元するには、オブジェクトの[プレビュー] ページに移動し、 [リストア] をクリックします。 オブジェクトの復元には 1 分かかります。 このプロセスの間、オブジェクトは復元中の状態にあります。



  • API / SDK によるアーカイブオブジェクトの復元

    Java SDK を例に挙げて説明します。 オブジェクトを復元するには、"restoreObject" メソッドを呼び出します。

    ObjectMetadata objectMetadata = ossClient.getObjectMetadata(bucketName, key);
    // check whether the object is archive class
    StorageClass storageClass = objectMetadata.getObjectStorageClass();
    if (storageClass == StorageClass.Archive) {
        // restore object
        ossClient.restoreObject(bucketName, key);
        // wait for restore completed
        do {
            Thread.sleep(1000);
            objectMetadata = ossClient.getObjectMetadata(bucketName, key);
        } while (!  objectMetadata.isRestoreCompleted());
    
    // get restored object
     OSSObject ossObject = ossClient.getObject(bucketName, key);
    ossObject.getObjectContent().close();
  • OSS コマンドラインツールによるアーカイブオブジェクトの復元
    ossutil を例に挙げて説明します。
    ./ossutil restore oss://[Bucket name]/[Object name]

    [Bucket name][Object name] を該当するバケットとオブジェクトに置き換えます。