OSS提供标准、低频访问、归档和冷归档四种存储类型,全面覆盖从热到冷的各种数据存储场景。本文主要介绍如何转换文件(Object)的存储类型。

注意事项

  • 当您使用webpack或browserify等打包工具时,请通过npm install ali-oss的方式安装Browser.js SDK。
  • 由于Browser.js SDK通常在浏览器环境下使用,为避免暴露阿里云账号访问密钥(AccessKey ID和AccessKey Secret),强烈建议您使用临时访问凭证的方式执行OSS相关操作。

    搭建STS服务的具体操作请参见开发指南中的使用STS临时访问凭证访问OSS。您可以通过调用STS服务的AssumeRole接口或者使用各语言STS SDK来获取临时访问凭证。临时访问凭证包括临时访问密钥(AccessKey ID和AccessKey Secret)和安全令牌(SecurityToken)。

示例代码

  • 将Object的存储类型从标准或低频访问转换为归档或冷归档类型

    以下代码用于将Object的存储类型从标准或低频访问转换为归档类型:

    <!DOCTYPE html>
    <html lang="en">
    
    <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.16.0.min.js"></script>
      <script type="text/javascript">    
        const client = new OSS({
           // yourRegion填写Bucket所在地域。以华东1(杭州)为例,yourRegion填写为oss-cn-hangzhou。
           region: 'yourRegion',
           // 从STS服务获取的临时访问密钥(AccessKey ID和AccessKey Secret)。
           accessKeyId: 'yourAccessKeyId',
           accessKeySecret: 'yourAccessKeySecret',
           // 从STS服务获取的安全令牌(SecurityToken)。
           stsToken: 'yourSecurityToken',
           // 填写Bucket名称,例如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)。如需转换为冷归档存储类型,请将Archive替换为ColdArchive。
              'x-oss-storage-class': 'Archive'
            }
          }
          ).then(r => {
            console.log(r.res.status)
          })
        })
    
      </script>
    </body>
    
    </html>
  • 将Object的存储类型从归档或冷归档转换为标准或低频访问类型

    以下代码用于将Object的存储类型从归档或冷归档转换为标准或低频访问类型:

    <!DOCTYPE html>
    <html lang="en">
      <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.16.0.min.js"
        ></script>
        <script type="text/javascript">
          const client = new OSS({
            // yourRegion填写Bucket所在地域。以华东1(杭州)为例,yourRegion填写为oss-cn-hangzhou。
            region: 'yourRegion',
            // 从STS服务获取的临时访问密钥(AccessKey ID和AccessKey Secret)。
            accessKeyId: 'yourAccessKeyId',
            accessKeySecret: 'yourAccessKeySecret',
            // 从STS服务获取的安全令牌(SecurityToken)。
            stsToken: 'yourSecurityToken',
            // 填写Bucket名称,例如examplebucket。
            bucket: "examplebucket",
         });
     
          const check = document.getElementById("check");
          const change = document.getElementById("change");
          const restore = document.getElementById("restore");
    
          check.addEventListener("click", () => {
            console.log("查看文件类型");
            // 请在开发者工具中通过查看Header的方式确认文件存储类型。
            client.head("newName.txt").then((r) => console.log(r));
          });
          // 解冻文件。
          restore.addEventListener("click", () => {
            // 指定拷贝后的文件名称,例如newexampleobject.txt。
            client.restore("newexampleobject.txt").then((r) => {
              console.log(r);
              console.log("开始解冻");
            });
          });
    
          // 确定解冻完成后开始转换文件存储类型。
          change.addEventListener("click", () => {
            // 解冻时间取决于文件大小。
            console.log("开始转换");
            client
              .copy("newexampleobject.txt", "newName.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