腾讯云 COS 对象存储完整教程:从入门到生产环境

📅 2026-06-30

COS(Cloud Object Storage) 是腾讯云的对象存储服务,与 AWS S3、阿里云 OSS 类似,提供海量数据的存储和管理。本文从创建 Bucket 开始,到配置 CDN 加速、设置生命周期、通过 SDK 上传文件,完整覆盖 COS 的核心用法。

什么是 COS

| 概念 | 说明 | 类比 | |------|------|------| | Bucket(存储桶) | 数据的容器 | 类似"根目录" | | Object(对象) | 存储的文件 | 类似"文件" | | Key(对象键) | 对象的唯一标识 | 类似"文件路径" | | Region(地域) | Bucket 所在数据中心 | 选择离用户最近的 |

第一步:创建 COS Bucket

1. 登录腾讯云控制台 → 对象存储 COS 2. 点击 创建存储桶 3. 选择地域(建议与 CVM 同地域,内网传输免费) 4. 输入 Bucket 名称(全网唯一) 5. 访问权限:私有读写(默认,最安全) 6. 其他保持默认,创建完成

`bash

COSCMD 命令行工具创建 Bucket

pip install coscmd coscmd config -a <SecretId> -s <SecretKey> -b <BucketName> -r <Region> `

第二步:获取访问密钥

要使用 COS 的 API 或 SDK,需要获取密钥:

1. 控制台 → 访问管理 CAMAPI 密钥管理 2. 创建密钥,获得 SecretIdSecretKey 3. 保存好 SecretKey,它只显示一次

> ⚠️ 密钥拥有完全的 COS 权限,绝对不能泄露到公开代码中。

第三步:上传文件

方式一:控制台上传

COS 控制台 → 点击 Bucket → 上传文件 → 直接拖拽文件即可。

方式二:COSCMD 命令行

`bash

安装 COSCMD

pip install coscmd

配置

coscmd config -a AKIDxxxx -s xxxx -b my-bucket-1234567890 -r ap-singapore

上传文件

coscmd upload local-file.jpg /images/photo.jpg

上传整个目录

coscmd upload -r ./website/ /website/

查看文件列表

coscmd list / `

方式三:Python SDK

`python from qcloud_cos import CosConfig, CosS3Client import os

config = CosConfig( Region='ap-singapore', SecretId=os.environ['COS_SECRET_ID'], SecretKey=os.environ['COS_SECRET_KEY'] ) client = CosS3Client(config)

上传文件

response = client.put_object_from_local_file( Bucket='my-bucket-1234567890', LocalFilePath='local-image.jpg', Key='photos/avatar.jpg' ) print(f"ETag: {response['ETag']}") `

方式四:Node.js SDK

`javascript const COS = require('cos-nodejs-sdk-v5'); const cos = new COS({ SecretId: process.env.COS_SECRET_ID, SecretKey: process.env.COS_SECRET_KEY, });

cos.putObject({ Bucket: 'my-bucket-1234567890', Region: 'ap-singapore', Key: 'uploads/report.pdf', Body: require('fs').createReadStream('./report.pdf'), }, (err, data) => { if (err) console.error(err); else console.log('Uploaded:', data.Location); }); `

第四步:生成预签名 URL

对于私有 Bucket,可以通过预签名 URL 临时授权访问:

`python from qcloud_cos import CosConfig, CosS3Client

client = CosS3Client(config)

生成下载 URL(有效期 3600 秒 = 1 小时)

url = client.get_presigned_download_url( Bucket='my-bucket-1234567890', Key='private/report.pdf', Expired=3600 ) print(url) `

> 预签名 URL 非常适合需要临时分享私有文件给特定用户的场景。

第五步:绑定自定义域名

1. COS 控制台 → Bucket → 域名与传输管理自定义源站域名 2. 添加你的域名(如 cdn.yourdomain.com) 3. 在 DNS 服务商添加 CNAME 记录: ` cdn.yourdomain.com CNAME → <Bucket>.cos.<Region>.myqcloud.com ` 4. SSL 证书:腾讯云提供免费 DV 证书,一键部署

> 绑定自定义域名后,可以通过 https://cdn.yourdomain.com/image.jpg 访问文件,更加专业。

第六步:配置 CDN 加速

1. 进入 Bucket → 域名管理 → 开启 CDN 加速 2. 配置缓存规则: - 图片/JS/CSS → 缓存 7-30 天 - HTML → 缓存 1 小时 - API 响应 → 不缓存 3. 开启 HTTPS、HTTP/2、Gzip 压缩

CDN 加速后,全球加载速度显著提升且 CDN 流量更便宜。

第七步:存储类型与生命周期

存储类型对比

| 存储类型 | 价格(/GB/月) | 最低存储时间 | 适用场景 | |---------|:---:|:---:|------| | 标准存储 | $0.024 | 无限制 | 频繁访问的热数据 | | 低频存储 | $0.014 | 30 天 | 月访问 1-2 次 | | 归档存储 | $0.004 | 90 天 | 季度/年度访问 | | 深度归档存储 | $0.002 | 180 天 | 长期合规存档 |

配置生命周期规则

自动将数据降级为便宜的存储类型:

`json { "Rule": [{ "Status": "Enabled", "Filter": {"Prefix": "logs/"}, "Transition": [ {"Days": 30, "StorageClass": "STANDARD_IA"}, {"Days": 90, "StorageClass": "ARCHIVE"}, {"Days": 365, "StorageClass": "DEEP_ARCHIVE"} ], "Expiration": {"Days": 730} }] } `

效果:"日志数据 0-30 天热存 → 30 天后转低频 → 90 天后转归档 → 2 年后自动删除"

第八步:静态网站托管

COS 可以直接托管静态网站(HTML/CSS/JS):

1. Bucket → 基础配置静态网站 2. 开启,设置索引文档为 index.html 3. 设置错误文档为 404.html 4. 设置 Bucket 访问权限为 公有读

> 💡 配合 CDN + 自定义域名 + 免费 SSL,可以低成本搭建全球加速的静态网站。

第九步:成本优化

| 策略 | 节省比例 | 操作 | |------|:---:|------| | 生命周期自动降级 | 30-70% | 自动转低频/归档 | | CDN 回源 COS(内网) | 免回源流量费 | 同 Region | | 清理碎片(未完成上传) | 避免隐藏费用 | 定期检查 | | 启用清单功能 | 发现浪费 | COS 控制台 | | GD 图片压缩(万象) | 按压缩比节省 | 开通数据万象 |

COS vs 自建文件服务器

| 维度 | COS 对象存储 | 自建 NFS/FTP | |------|:---:|:---:| | 可靠性 | 99.999999999%(12 个 9) | 取决于硬件 | | 带宽 | 按需扩展 | 受限于服务器带宽 | | 运维成本 | 零运维 | 需要维护服务器 | | CDN 集成 | 一键配置 | 需要自己搭建 | | 成本 | 按量计费 | 固定月费 |

> 除非有特殊合规需求,否则不推荐自建文件服务器来代替 COS。

常见问题 FAQ

Q:COS 和 CVM 的云硬盘有什么区别? A:云硬盘是块存储,绑定到 CVM 实例,像本地硬盘一样。COS 是对象存储,通过 HTTP API 访问,独立于任何服务器。

Q:Bucket 名称为什么必须全球唯一? A:COS 的访问域名为 bucket-name.cos.region.myqcloud.com,所以 Bucket 名称在腾讯云全网唯一。

Q:内网访问 COS 免费吗? A:同一 Region 内的 CVM 通过内网访问 COS,流量免费。非常适合做 Web 应用的静态资源存储。

总结

腾讯云 COS 核心要点:

- ✅ 创建 Bucket 后,通过 SDK/COSCMD/控制台上传文件 - ✅ 私有 Bucket + 预签名 URL 实现安全分享 - ✅ 绑定自定义域名 + CDN + SSL,实现专业访问 - ✅ 配置生命周期策略,自动降低存储成本 - ✅ 内网访问免费,与 CVM 同 Region 部署最佳

---

本文由 ChengziCloud 整理。需要云服务技术支持?联系我们 获取方案。