SuperAPI AI 工具集

forze-storage-gcs

部署与运维

查看项目

更新于 10-16 01:19

技能介绍

用途:为 Forze 应用接入 Google Cloud Storage 异步对象存储(gcloud-aio-storage)。若使用 S3 兼容后端,应改看 forze-storage-s3;通用 handler 模式参考 forze-framework-usage。

主要能力与配置:StorageSpec.name 是逻辑路由,建议用共享 StrEnum 定义,并在 GCSDepsModule.storages 中以同一路由注册。示例中定义 ResourceName.PROJECT_ATTACHMENTS,构造 StorageSpec、GCSClient 与 GCSDepsModule,storages 配置内含 bucket 与 tenant_aware。

生命周期:使用 LifecyclePlan.from_steps 与 forze_gcs 的 gcs_lifecycle_step(project_id="my-gcp-project")。本地 fake-gcs-server 需在启动前设置 STORAGE_EMULATOR_HOST=http://localhost:4443;生命周期可选 service_file 指定服务账号 JSON,否则走 ADC。

使用方式:存储为 CQRS 分离,写入在工厂中解析命令侧 ctx.storage.command(spec),下载/列出使用 ctx.storage.query(spec)。写入通过 StorageCommandPort.upload(UploadedObject(filename, data, prefix)) 完成。tenant_aware=True 时,需在 HTTP 或 worker 边界绑定 TenantIdentity 后再调用存储,不要为存储路由把 tenant id 塞进领域 DTO。

测试:单元测试可用 forze_mock 的 MockStorageAdapter;集成式检查使用 fake-gcs-server,详见 GCS 集成文档。

限制与反模式:Bucket 名不放 StorageSpec,应放 deps 配置;不要跳过 GCSDepsModule.storages,否则路由未注册;不要用对象存储作事务状态,一致性要求高时先提交文档元数据再执行存储副作用;不要在代码中硬编码服务账号 JSON,应使用 ADC、工作负载身份或密钥层;Forze 不创建 Bucket 或 IAM,GCP 资源由基础设施工具管理。更多细节暂未提供。