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

Object Storage Service:オブジェクトのストレージクラスの変換

最終更新日:Dec 05, 2024

Object Storage Service (OSS) は、ホットデータからコールドデータまでのさまざまなデータストレージシナリオをカバーするために、標準、低頻度アクセス (IA) 、アーカイブ、コールドアーカイブ、およびディープコールドアーカイブのストレージクラスを提供します。 OSSでは、オブジェクトが作成されると、そのコンテンツを変更することはできません。 オブジェクトのストレージクラスを変換する場合は、Bucket.CopyObjectメソッドを使用してオブジェクトをコピーし、新しいオブジェクトを作成し、新しいオブジェクトのストレージクラスを変換する必要があります。

使用上の注意

  • WebpackやBrowserifyなどのパッケージングツールを使用する場合は、npm install ali-OSSコマンドを実行して、oss SDK for Browser.jsをインストールします。

  • ブラウザからOSSバケットにアクセスしたいが、バケットにCORSルールが設定されていない場合、ブラウザはリクエストを拒否します。 したがって、ブラウザからバケットにアクセスする場合は、バケットのCORSルールを設定する必要があります。 詳細については、「インストール」をご参照ください。

  • ほとんどの場合、ブラウザではOSS SDK for Browser.jsが使用されます。 AccessKeyペアが公開されないようにするには、Security Token Service (STS) から取得した一時的なアクセス資格情報を使用してOSSにアクセスすることを推奨します。

    一時的なアクセス資格情報は、AccessKeyペアとセキュリティトークンで構成されます。 AccessKeyペアは、AccessKey IDとAccessKeyシークレットで構成されます。 一時的なアクセス資格情報を取得する方法の詳細については、「一時的なアクセス権限付与にSTSを使用する」をご参照ください。

サンプルコード

オブジェクトのストレージクラスをStandardまたはIAからArchiveに変換

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <title>Document</title>
</head>

<body>
  <button id="upload">Upload an Object</button>
  <button id='copy'>Convert Storage Class</button>
   <!-- Import the SDK file -->
  <script type="text/javascript" src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"></script>
  <script type="text/javascript">    
    const client = new OSS({
       // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. 
       region: 'yourRegion',
       authorizationV4: true,
       // Specify the temporary AccessKey pair obtained from Security Token Service (STS). The AccessKey pair consists of an AccessKey ID and an AccessKey secret. 
       accessKeyId: 'yourAccessKeyId',
       accessKeySecret: 'yourAccessKeySecret',
       // Specify the security token obtained from STS. 
       stsToken: 'yourSecurityToken',
       // Specify the name of the bucket. Example: examplebucket. 
       bucket: "examplebucket",
     });

    const upload = document.getElementById('upload')
    const copy = document.getElementById('copy')

    // Specify the content of the object to upload. 
    const file = new Blob(['examplecontent'])
    // Specify the full path of the object to upload. Example: exampledir/exampleobject.txt. 
    const fileName = 'exampledir/exampleobject.txt'

    // Upload the object. 
    upload.addEventListener('click', () => {
      client.put(fileName, file).then(r => console.log(r))
    })

    // Convert the storage class of the object by copying the object. 
    copy.addEventListener('click', () => {
      // Specify the name of the destination object. Example: newexampleobject.txt. 
      client.copy('newexampleobject.txt', fileName, {
        headers: {
          // Specify the storage class of the destination object as Archive. If you want to convert the storage class of the object to Cold Archive, replace Archive with Cold Archive. 
          'x-oss-storage-class': 'Archive'
        }
      }
      ).then(r => {
        console.log(r.res.status)
      })
    })

  </script>
</body>

</html>

オブジェクトのストレージクラスをアーカイブからIAまたは標準に変換

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
  </head>

  <body>
    <button id="check">Check Storage Class</button>
    <button id="restore">Restore an Object</button>
    <button id="change">Convert Storage Class</button>
    <!-- Import the SDK file -->
    <script
      type="text/javascript"
      src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"
    ></script>
    <script type="text/javascript">
      const client = new OSS({
        // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. 
        region: 'yourRegion',
        // Specify the temporary AccessKey pair obtained from STS. The AccessKey pair consists of an AccessKey ID and an AccessKey secret. 
        accessKeyId: 'yourAccessKeyId',
        accessKeySecret: 'yourAccessKeySecret',
        // Specify the security token obtained from STS. 
        stsToken: 'yourSecurityToken',
        // Specify the name of the bucket. Example: examplebucket. 
        bucket: "examplebucket",
     });
 
      const check = document.getElementById("check");
      const change = document.getElementById("change");
      const restore = document.getElementById("restore");

      check.addEventListener("click", () => {
        console.log ("Query the storage class of the object")
        // Check the header of the object in the developer tools of your browser to query the storage class of the object. 
        client.head("srcobject.txt").then((r) => console.log(r));
      });
      // Restore the object. 
      restore.addEventListener("click", () => {
        // Specify the name of the object to be restored. Example: srcobject.txt. 
        client.restore("srcobject.txt").then((r) => {
          console.log(r);
          console.log ("Start to restore the object")
        });
      });

      // Start to convert the storage class of the object after the object is restored. 
      change.addEventListener("click", () => {
        // The duration of the restoration is determined by the object size. 
        console.log ("Start to convert the storage class of the object")
        client
          // Specify destobject.txt as the object name after srcobject.txt is copied. 
          .copy("destobject.txt", "srcobject.txt", {
            // Specify that the storage class of the object is converted to IA. If you want to convert the storage class of the object to Standard, replace IA with Standard. 
            headers: { "x-oss-storage-class": "IA" },
          })
          .then((r) => console.log(r))
          // A common reason why an error is reported when you convert the storage class is that the object is still being restored. 
          .catch((e) => console.log ("conversion error:", e))
      });
    </script>
  </body>
</html>
                    

関連ドキュメント

  • オブジェクトのストレージクラスの変換に使用される完全なサンプルコードについては、GitHubをご覧ください。

  • オブジェクトのストレージクラスを変換するために呼び出すことができるAPI操作の詳細については、「CopyObject」をご参照ください。