Cell - 云组件
云包的共享抽象:凭据、区域和账户的来源,以及 @celljs/oss 和 @celljs/cos 实现的 ObjectStorageService 接口。
bash
npm install @celljs/cloud凭据、区域、账户
| 组件 | 默认来源 |
|---|---|
CredentialsProvider | cloud.credentials:{ accessKeyId, accessKeySecret, token? } |
RegionProvider | cloud.region |
AccountProvider | cloud.account:{ id } |
ClientOptionsProvider | cloud.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。