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

Object Storage Service:オブジェクトのストレージクラスの変更 (Browser.js SDK)

最終更新日:Nov 30, 2025

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 ペアの漏洩を防ぐため、セキュリティトークンサービス (STS) から取得した一時的なアクセス認証情報を使用して OSS にアクセスすることを推奨します。

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

コード例

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

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

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

<body>
  <button id='upload'>アップロード</button>
  <button id='copy'>オブジェクトのストレージクラスを変換</button>
   <!--SDK ファイルをインポートします。-->
  <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({
       // バケットが配置されているリージョンに yourRegion を設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合は、yourRegion を oss-cn-hangzhou に設定します。
       region: 'yourRegion',
       authorizationV4: true,
       // STS から取得した一時的な AccessKey ID と AccessKey Secret。
       accessKeyId: 'yourAccessKeyId',
       accessKeySecret: 'yourAccessKeySecret',
       // STS から取得したセキュリティトークン。
       stsToken: 'yourSecurityToken',
       // バケット名を指定します。 例:examplebucket。
       bucket: "examplebucket",
     });

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

    // アップロードするファイルの内容を指定します。
    const file = new Blob(['examplecontent'])
    // examplebucket にアップロードするオブジェクトの完全なパスを指定します。 例:exampledir/exampleobject.txt。
    const fileName = 'exampledir/exampleobject.txt'

    // ファイルをアップロードします。
    upload.addEventListener('click', () => {
      client.put(fileName, file).then(r => console.log(r))
    })

    // copy メソッドを使用してオブジェクトのストレージクラスを変換します。
    copy.addEventListener('click', () => {
      // 宛先オブジェクトの名前を指定します。 例:newexampleobject.txt。
      client.copy('newexampleobject.txt', fileName, {
        headers: {
          // オブジェクトのストレージクラスをアーカイブに設定します。 ストレージクラスをコールドアーカイブに変更するには、Archive を ColdArchive に置き換えます。
          'x-oss-storage-class': 'Archive'
        }
      }
      ).then(r => {
        console.log(r.res.status)
      })
    })

  </script>
</body>

</html>

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

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

  <body>
    <button id="check">チェック</button>
    <button id="restore">解凍</button>
    <button id="change">変換</button>
    <!--SDK ファイルをインポートします。-->
    <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({
        // バケットが配置されているリージョンに yourRegion を設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合は、yourRegion を oss-cn-hangzhou に設定します。
        region: 'yourRegion',
        // STS から取得した一時的な AccessKey ID と AccessKey Secret。
        accessKeyId: 'yourAccessKeyId',
        accessKeySecret: 'yourAccessKeySecret',
        // STS から取得したセキュリティトークン。
        stsToken: 'yourSecurityToken',
        // バケット名を指定します。 例:examplebucket。
        bucket: "examplebucket",
     });
 
      const check = document.getElementById("check");
      const change = document.getElementById("change");
      const restore = document.getElementById("restore");

      check.addEventListener("click", () => {
        console.log("オブジェクトタイプをチェック");
        // 開発者ツールのヘッダーをチェックして、オブジェクトのストレージクラスを確認します。
        client.head("srcobject.txt").then((r) => console.log(r));
      });
      // オブジェクトを解凍します。
      restore.addEventListener("click", () => {
        // 解凍するオブジェクトの名前を指定します。 例:srcobject.txt。
        client.restore("srcobject.txt").then((r) => {
          console.log(r);
          console.log("解凍を開始");
        });
      });

      // オブジェクトが解凍された後、そのストレージクラスを変換します。
      change.addEventListener("click", () => {
        // 解凍時間はオブジェクトのサイズによって異なります。
        console.log("変換を開始");
        client
          // srcobject.txt のコピー先となる宛先オブジェクトの名前として destobject.txt を指定します。
          .copy("destobject.txt", "srcobject.txt", {
            // オブジェクトのストレージクラスを低頻度アクセス (IA) に設定します。 ストレージクラスを標準に変更するには、IA を Standard に置き換えます。
            headers: { "x-oss-storage-class": "IA" },
          })
          .then((r) => console.log(r))
          // 変換エラーの一般的な原因は、オブジェクトがまだ解凍中であることです。
          .catch((e) => console.log("変換エラー:", e));
      });
    </script>
  </body>
</html>
                    

関連ドキュメント

  • オブジェクトのストレージクラスを変換するための完全なサンプルコードについては、「GitHub の例」をご参照ください。

  • オブジェクトのストレージクラスを変換するために使用される API 操作の詳細については、「CopyObject」をご参照ください。