「COS」- 腾讯云 | 对象存储 | Cloud Object Storage

认识

官网:https://cloud.tencent.com/product/cos
文档:https://cloud.tencent.com/document/product/436
仓库:None

对象存储(Cloud Object Storage,COS)是腾讯云提供的一种存储海量文件的分布式存储服务,具有高扩展性、低成本、可靠安全等优点。通过控制台、API、SDK 和工具等多样化方式,用户可简单、快速地接入 COS,进行多格式文件的上传、下载和管理,实现海量数据存储和管理。简而言之,COS 是腾讯云实现的 S3 存储服务。

组成

—— 根据规范,该部分将记录 COS 对象存储的架构及底层关键组件。但鉴于我们是服务用户且服务可用性具有保障,所以我们暂时不必过多关心 COS 的组成及底层实现。

部署模式:Client / Server

性质

API and SDK

API 文档 | https://cloud.tencent.com/document/product/436/7751
SDK 文档 | https://cloud.tencent.com/document/product/436/6474

跨云数据迁移

七牛云 KODO 迁移:https://cloud.tencent.cn/document/product/659/81165

当数据迁移成功后,迁移任务能够显示被迁移的数据量,但是 COS 可能会存在延迟(即无法实时显示当前数据量)。

cos2cos,如果迁移失败,则可能是账号欠费。

客户端工具

COS Browser | https://www.tencentcloud.com/document/product/436/11366

提供 S3 兼容

https://cloud.tencent.com/document/product/436/41284

Endpoint

  • cos.<Region>.myqcloud.com
  • https://cos.<Region>.myqcloud.com

构造

—— 根据规范,该部分将记录获得 COS 对象存储服务的方法。根据事物构造方法,我们可以通过外界来直接取得 COS 对象存储服务,而不需要我们自行构造。

服务端:注册腾讯云账号,并开通 COS 服务即可。

客户端:

应用

场景 | 方案

域名合规问题

https://cloud.tencent.com/document/faq/436/102489

通过 CDN 服务,将图片上传到 COS 存储

COS 存储桶访问权限,公共权限 -> 公共读私有写
CDN 回源,私有存储桶访问 -> 关闭

在 Groovy 中,通过 Java SDK 访问 COS 存储 | Access S3 with SDK

Java springboot项目引入腾讯云COS实现上传-腾讯云开发者社区-腾讯云
COS Java SDK | https://mvnrepository.com/artifact/com.qcloud/cos_api

文档 | https://javadoc.io/doc/com.qcloud/cos_api/latest/index.html

@Grab(group='com.qcloud', module='cos_api', version='5.6.234')
import com.qcloud.cos.COSClient
import com.qcloud.cos.ClientConfig
import com.qcloud.cos.auth.BasicCOSCredentials
import com.qcloud.cos.region.Region

def secretId = "your_secret_id"
def secretKey = "your_secret_key"
def regionName = "your_region_name"

BasicCOSCredentials cred = new BasicCOSCredentials(secretId, secretKey)
ClientConfig clientConfig = new ClientConfig(new Region(regionName))
COSClient cosClient = new COSClient(cred, clientConfig)

// 列出存储桶中的对象:

def bucketName = "your_bucket_name"
cosClient.listObjects(bucketName).objectSummaries.each { obj ->
    println(obj.key)
}

// 上传文件到腾讯云对象存储:

def fileToUpload = new File("path_to_your_file")
cosClient.putObject(bucketName, "object_key", fileToUpload)

// 下载文件:

def outputFile = new File("path_to_output_file")
cosClient.getObject(bucketName, "object_key", outputFile)

SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

—— 忽略该错误即可,其并不影响执行。

改进

参考