记录一下周末写的 COS 命令行工具

cos

对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。COS 提供网页端管理界面、多种主流开发语言的 SDK、API 以及命令行和图形化工具,并且兼容 S3 的 API 接口,方便用户直接使用社区工具和插件。

# Installation

npm i @bougiel/cos -g

# CLI

# 配置创建 - cos config

目前可用的配置有:

  • cos config SecretId xxx - 配置 SecretId
  • cos config SecretKey xxx - 配置 SecretKey
  • cos config AppId xxx - 配置 AppId,即将废弃,只用创建 Bucket 的时候会用到
  • cos config Bucket xxx - 选择一个 Bucket,操作一个 Bucket 里面的对象时需要提前配置
  • cos config Region xxx - 配置选择的 Bucket 区域

查看配置列表:

  • cos config --list

# 存储桶操作 - cos bucket

使用前需要提前配置 SecretIdSecretKey, 目前支持的命令有:

  • cos bucket - 查看所有 Bucket 列表
  • cos bucket create xxx --region ap-beijing - 创建一个 Bucket ,需要提前配置 AppId
  • cos delete xxx - 删除一个空的 Bucket

# 对象操作 - cos object

使用前需要提前配置 BucketRegion,切换 Bucket 时需要重新配置 BucketRegion,目前支持的命令有:

  • cos object --list - 查看所有对象
  • cos object upload . - 上传一个文件(夹),相对于当前目录

# Node API

# COS - Base class, unexported

export interface IConfig {
  SecretKey: string
  SecretId: string
}
export declare class COS {
  cos: any
  config: IConfig
  constructor(config: IConfig)
}

# COSBucket

d.ts file:

import { COS } from './COS'
export declare class COSBucket extends COS {
  list(region?: string): any
  create(bucketName: string, appId: string, region?: string): any
  delete(bucketName: string, region?: string): any
}
const { COSBucket } = require('@bougiel/cos')

const bucket = new COSBucket({ SecretId, SecredKey })

// 查看所有 Bucket
bucket.list(region).then(console.table)
// 创建一个 Bucket
bucket.create('test', '1234', 'ap-beijing')
// 删除一个 Bucket
bucket.delete('test-1234', 'ap-beijing')

# COSObject

d.ts file:

import { COS, IConfig } from './COS'
interface IObjectConfig extends IConfig {
  Bucket: string
  Region: string
}
export declare class COSObject extends COS {
  bucketName: string
  region: string
  constructor(params: IObjectConfig)
  list(prefix?: string): any
  upload(uploadPath: string): any
}
export {}
const { COSObject } = require('@bougiel/cos')

const object = new COSObject({ SecretId, SecredKey, Bucket, Region })

// 查看所有 object
object.list().then(console.table)
// 上传一个文件(夹)
object.upload(path.resolve(__dirname, '../dist'))

# 参考