腾讯云对象存储COS的一些使用经验

2026-09-18 19:20:50
丁国栋
原创 12
摘要:本文记录和分享一些腾讯云COS的使用经验。

最早接触的是阿里云的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访问的文件是不是同一个文件。

---

发表评论
博客分类