配置对象存储
Asset Service 通过一个 StorageAdapter 与存储通信,所以切换后端只改配置。StackRivet 提供三种后端:本地磁盘(开发)、S3 兼容(MinIO、AWS S3 等)和阿里云 OSS。同一时间只有一个生效。
共享配置块:
stackrivet: asset: storage-type: local # local | s3 | aliyun_oss max-file-size: 104857600 # 字节(100 MB) allowed-extensions: [jpg, jpeg, png, pdf, xlsx, csv] signed-url-ttl: 300 # 秒密钥从环境变量注入,绝不提交进代码仓库。
本地(开发)
Section titled “本地(开发)”默认。文件写入本地磁盘——开发够用,不可用于生产(容器重启或扩容后文件丢失)。
stackrivet: asset: storage-type: local设 STACKRIVET_STORAGE_TYPE=local(或保留默认)。
S3 兼容(MinIO、AWS S3)
Section titled “S3 兼容(MinIO、AWS S3)”用于本地 MinIO 或 AWS S3(及其他 S3 兼容存储)。本地测试时,server 的 docker-compose.yml 含一个 minio 服务:
docker compose up -d minio配置:
stackrivet: asset: storage-type: s3 s3: endpoint: ${STACKRIVET_S3_ENDPOINT} region: ${STACKRIVET_S3_REGION} access-key-id: ${STACKRIVET_S3_ACCESS_KEY} secret-access-key: ${STACKRIVET_S3_SECRET_KEY} path-style-access: true # MinIO 用 true设 STACKRIVET_STORAGE_TYPE=s3 和各 STACKRIVET_S3_* 变量。MinIO 通常 path-style-access: true。
阿里云 OSS
Section titled “阿里云 OSS”stackrivet: asset: storage-type: aliyun_oss s3: endpoint: ${STACKRIVET_ALIYUN_OSS_ENDPOINT} # 如 https://oss-us-west-1.aliyuncs.com region: us-west-1 access-key-id: ${STACKRIVET_ALIYUN_OSS_ACCESS_KEY} secret-access-key: ${STACKRIVET_ALIYUN_OSS_SECRET_KEY}设 STACKRIVET_STORAGE_TYPE=aliyun_oss 和各 STACKRIVET_ALIYUN_OSS_* 变量。
Region 要求
Section titled “Region 要求”endpoint 的 region 必须与 bucket 所在 region 一致,否则 OSS 返回 AccessDenied。region 和 path-style-access 仅对 S3 生效,OSS 忽略。S3 和 OSS 都注入到同一个 stackrivet.asset.s3.* 块——只有 storage-type 选中的后端生效。
配置后,先确认配置,再跑一次上传往返:
- 用 CLI:
stackrivet doctor检查所选存储类型与必要凭据是否存在(见 CLI 参考)。 - 然后在管理端上传一个文件,确认它落进 bucket,再下载(私有文件下载经权限校验,并用短期 signed URL)。
常用存储变量见配置。