edit-icon download-icon

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

最終更新日: May 17, 2018

OSS は、3 つのストレージクラスを提供しています。その中で、アーカイブストレージクラスは最低価格です。ただし、アクセスする場合は、アーカイブされたデータを可読な状態に復元する必要があります。このトピックでは、アーカイブストレージクラスのバケットを作成して使用する方法について説明します。

注: 3 つのストレージクラスの詳細については、ストレージクラスの概要を参照してください。

アーカイブバケットを作成する

コンソール、API / SDK、またはコマンドラインツールを使用してアーカイブバケットを作成することができます。

コンソールを使用してアーカイブバケットを作成する

コンソールにアーカイブバケットを作成するには、ストレージクラスに対してアーカイブを選択します。詳細な手順については、バケットの作成を参照してください。

API / SDK を使用してアーカイブバケットを作成する

Java SDK を例に取ってみましょう。

  1. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  2. CreateBucketRequest createBucketRequest=new CreateBucketRequest(bucketName);
  3. // Set the bucket ACL to public-read. The default ACL policy is private-read-write. createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
  4. // Set the storage class to Archive. The default storage class is Standard.
  5. createBucketRequest.setStorageClass(StorageClass.Archive);
  6. ossClient.createBucket(createBucketRequest);

OSS コマンドラインツールを使用してアーカイブバケットを作成する

ossutil を例に取る:

  1. ./ossutil mb oss://[bucket name] --storage-class=Archive

[bucket name]を自分のバケットに置き換えてください。--storage-classArchiveに設定してください。

アーカイブバケットにデータをアップロードする

アーカイブバケットはオブジェクトとマルチパートのアップロードをサポートしますが、オブジェクトの追加をサポートしません。プットオブジェクトとマルチパートアップロードによってアップロードされたオブジェクトは、アーカイブバケットに直接格納できます。

アーカイブバケットからデータをダウンロードする

アーカイブバケットに格納されたオブジェクトにはリアルタイムでアクセスできません。あなたは最初のリストアを開始しなければならないリクエストとオブジェクトが利用可能になるまで 1 分待ちます。

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

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

コンソール、API / SDK、またはコマンドラインツールを使用してアーカイブオブジェクトを復元することを選択できます。

コンソールを使用してアーカイブされたオブジェクトを復元する

コンソールでアーカイブされたオブジェクトを復元するには、オブジェクトのプレビューページを入力し、次の図に示すようにリストアをクリックします。
Restore object

オブジェクトの復元には 1 分かかります。このプロセス中、オブジェクトは復元状態にあります。

API / SDK を使用してアーカイブオブジェクトを復元する

たとえば、Java SDK を使用します。オブジェクトを復元するには、restoreObject メソッドを呼び出します。

  1. ObjectMetadata objectMetadata = ossClient.getObjectMetadata(bucketName, key);
  2. // check whether the storage class of the object is Archive
  3. StorageClass storageClass = objectMetadata.getObjectStorageClass();
  4. if (storageClass == StorageClass.Archive) {
  5. // restore the object
  6. ossClient.restoreObject(bucketName, key);
  7. // wait for the restore process to complete
  8. do {
  9. Thread.sleep(1000);
  10. objectMetadata = ossClient.getObjectMetadata(bucketName, key);
  11. } while (!objectMetadata.isRestoreCompleted());
  12. }
  13. // get the restored object
  14. OSSObject ossObject = ossClient.getObject(bucketName, key);
  15. ossObject.getObjectContent().close();

OSS コマンドラインツールを使用してアーカイブオブジェクトを復元する

ossutil を例に取る:

  1. ./ossutil restore oss://[Bucket name]/[Object name]

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