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。