腾讯云对象存储COS的一些使用经验
- 2026-09-18 19:20:50
- 丁国栋
- 原创 10
最早接触的是阿里云的OSS,后来是AWS S3,再后来是腾讯云COS,这三个都是对象存储服务,但名字各有不同。OSS是Object Storage Service,AWS S3 是 Amazon Simple Storage Service,COS是 Cloud Object Storage。不得不说起名字是个大学问,这样一说起来对象存储就知道是哪一家的产品和服务了。
1. COS 的授权策略
可以精确授权到某个目录,并且限制某个IP访问,这样就能精准控制了。例如允许指定的IP上传文件到cos指定目录:
{
"statement": [
{
"action": [
"cos:HeadBucket",
"cos:GetBucket"
],
"condition": {
"ip_equal": {
"qcs:ip": [
"124.220.158.195"
]
}
},
"effect": "Allow",
"resource": [
"qcs::cos:ap-shanghai:uid/UID:BUCKET_NAME*"
]
},
{
"action": [
"cos:GetBucketIntelligentTiering",
"cos:GetBucketObjectVersions",
"cos:GetObject",
"cos:HeadBucket",
"cos:HeadObject",
"cos:ListMultipartUploads",
"cos:ListParts",
"cos:OptionsObject",
"cos:AbortMultipartUpload",
"cos:CompleteMultipartUpload",
"cos:InitiateMultipartUpload",
"cos:PostObject",
"cos:PutObject",
"cos:UploadPart",
"cos:GetBucket"
],
"condition": {
"ip_equal": {
"qcs:ip": [
"124.220.158.195"
]
}
},
"effect": "Allow",
"resource": [
"qcs::cos:ap-shanghai:uid/UID:BUCKET_NAME/images/*",
]
}
],
"version": "2.0"
}
然后把策略授权给指定的用户即可。2. 关于 COS文件的ETag
因为 ETag是非常容易从控制台看到的,直接展示在详情页,所以我曾经想弄清楚是否可以通过本地文件采用编程的方式计算出COS对象存储中的文件的ETag值,这样来判断是否需要刷新CDN缓存。后来咨询之后得知并不能,但可以通过验证它的CRC64得到。
通过 COS 的命令行工具 coscli hash /path/to/file 可以得到文件的 crc64-ecma 值,而通过 curl -I https://cos.or.cdn.url | grep x-cos-hash-crc64ecma 也可以得到CRC64 值,正好可以用于对比本地的文件和通过CDN访问的文件是不是同一个文件。
---
发表评论