Skip to content

Cell - 云组件 ​

云包的共享抽象:凭据、区域和账户的来源,以及 @celljs/oss 和 @celljs/cos 实现的 ObjectStorageService 接口。

bash
npm install @celljs/cloud

凭据、区域、账户 ​

组件默认来源
CredentialsProvidercloud.credentials:{ accessKeyId, accessKeySecret, token? }
RegionProvidercloud.region
AccountProvidercloud.account:{ id }
ClientOptionsProvidercloud.client:云商客户端的额外选项
yaml
cloud:
  region: cn-hangzhou
  credentials:
    accessKeyId: "${env.ACCESS_KEY_ID}"
    accessKeySecret: "${env.ACCESS_KEY_SECRET}"

将凭据保存在环境变量中(cell.yml 中的 ${env.X});配置仅在服务端。绑定自己的 provider(rebind: true)从其他地方读取它们,如密钥管理系统。

对象存储 ​

ObjectStorageService 有 createBucket、deleteBucket、listBuckets、listObjects、getObject、getStream、putObject、copyObject、deleteObject 和 headObject,对每个云商的请求形状相同:

ts
import { Autowired, Component } from '@celljs/core';
import { ObjectStorageService } from '@celljs/cloud';

@Component()
export class Uploads {
    @Autowired(ObjectStorageService)
    protected readonly storage: ObjectStorageService<any>;

    save(key: string, body: Buffer) {
        return this.storage.putObject({ bucket: 'uploads', key, body });
    }
}

安装一个实现:@celljs/oss(阿里云)或 @celljs/cos(腾讯云)。getRawCloudService() 返回云商自有的客户端用于其他操作。

部署应用到云平台不需要这个包:见 cell deploy 的 preset。