跳到主要内容

自定义 S3 对象存储桶配置指南

本文档介绍如何在微搭私有化版本中配置和使用自定义的 S3 对象存储服务。

存储桶与配置参数对应关系(S3/MinIO 通用):

  • defaultBucket: lowcode-static - 用于存储静态资源
  • cloudStorageBucket: lowcode-storage - 用于存储应用数据
  • ciSourceBucket: lowcode-ci - 用于存储 CI/CD 相关文件
配置说明

无论使用腾讯云 COS、AWS S3、MinIO 还是其他兼容 S3 协议的对象存储服务,都需要创建上述三个存储桶,并在配置文件中使用相应的参数名称。

重要提醒

使用 Docker 启动的 Minio 对象存储不具备高可用性,不推荐用作生产环境存储文件。平台强烈建议连接用户自有的外部对象存储服务。

1. S3 对象存储配置

本指南以 腾讯云对象存储 COS 为例进行配置演示。其他云厂商的对象存储服务,只要支持标准 S3 接口协议,均可支持,具体配置请根据实际情况调整。

自定义命名

存储桶名称可根据实际需求自行定义

1.1 创建 lowcode-static 存储桶

创建 lowcode-static 存储桶

配置步骤:

  1. 创建存储桶

    • 点击"下一步"完成存储桶创建
  2. 配置权限策略

    • 进入路径:存储桶列表 → 选择存储桶 → 权限管理 → Policy 权限策略 → 添加权限
  3. 添加策略配置

    添加权限策略
    TCS 平台特别配置

    针对 TCS 平台上的 CSP 对象存储服务,需要按照以下图示进行策略配置:

    TCS 平台策略配置
  4. 完成配置

    • 点击"完成"保存配置

1.2 创建 lowcode-storage 存储桶

创建 lowcode-storage 存储桶

配置步骤:

  1. 设置权限策略

    • 进入路径:存储桶列表 → 选择存储桶 → 权限管理 → Policy 权限策略 → 添加权限
  2. 添加策略

    添加权限策略

1.3 创建 lowcode-ci 存储桶

权限说明

此存储桶不需要设置只读策略

创建 lowcode-ci 存储桶

2. MinIO 对象存储配置

MinIO 是一个高性能的分布式对象存储服务,兼容 Amazon S3 API。本节介绍如何配置 MinIO 对象存储服务。

生产环境提醒

使用 Docker 启动的 MinIO 对象存储不具备高可用性,不推荐用作生产环境存储文件。生产环境建议使用 MinIO 集群模式或云厂商的对象存储服务。

2.1 创建存储桶

在 MinIO 中创建以下三个存储桶:

  • lowcode-static:用于存储静态资源
  • lowcode-storage:用于存储应用数据
  • lowcode-ci:用于存储 CI/CD 相关文件

2.2 配置存储桶权限

lowcode-static 桶权限配置

lowcode-static 存储桶设置公共读取权限,允许匿名用户访问静态资源。

权限策略配置界面:

MinIO lowcode-static 桶权限设置

权限策略 JSON 配置:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"*"
]
},
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::lowcode-static/*"
]
}
]
}

lowcode-ci 桶权限配置

lowcode-ci 存储桶设置与 lowcode-static 相同的公共读取权限。

权限策略 JSON 配置:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"*"
]
},
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::lowcode-ci/lcp/*"
]
}
]
}
权限说明
  • 该策略允许所有用户("AWS": ["*"])对 lowcode-static 存储桶中的所有对象执行 s3:GetObject 操作
  • 这确保了静态资源可以被公开访问,满足 Web 应用的资源加载需求
  • lowcode-ci 存储桶需要设置与 lowcode-static 相同的公共读取权限
  • 只有 lowcode-storage 存储桶不需要设置公共读取权限

2.3 MinIO 配置参数

在配置文件中使用以下 MinIO 配置参数:

customS3:
enabled: true
endpoint: your-minio-server.com # MinIO 服务器地址
port: 9000 # MinIO 端口(默认 9000)
scheme: http # 协议(http 或 https)
accessKey: "your-access-key" # MinIO Access Key
secretKey: "your-secret-key" # MinIO Secret Key

# 存储桶配置
defaultBucket: lowcode-static
cloudStorageBucket: lowcode-storage
ciSourceBucket: lowcode-ci

pathStyle: true # MinIO 使用 path-style 访问
region: us-east-1 # MinIO 默认区域
MinIO 配置注意事项
  • MinIO 默认使用 pathStyle: true,与云厂商 S3 服务不同
  • 确保 MinIO 服务器的网络连通性和防火墙配置
  • Access Key 和 Secret Key 需要具有存储桶的完整读写权限

3. 单机版配置与安装

3.1 可视化部署方式

功能说明

单机版支持通过可视化界面配置外部 S3 中间件

操作步骤:

  1. 在浏览器中访问安装器页面:http://<服务器IP>:38080
  2. 在配置页面中开启外部 S3 中间件配置
可视化配置界面

3.2 脚本部署方式

config.yaml 文件中添加以下 S3 配置:

customS3:
enabled: true
endpoint: cos.ap-guangzhou.myqcloud.com
port: 443
scheme: https
accessKey: "" # 填入您的 AccessKey
secretKey: "" # 填入您的 SecretKey

# 存储桶配置(需要与前面创建的存储桶名称一致)
defaultBucket: lowcode-static-{appid} # 对应 1.1 步骤创建的存储桶
cloudStorageBucket: lowcode-storage-{appid} # 对应 1.2 步骤创建的存储桶
ciSourceBucket: lowcode-ci-{appid} # 对应 1.3 步骤创建的存储桶

pathStyle: false
region: ap-guangzhou # 根据实际地域调整
配置注意事项
  • 请确保 accessKeysecretKey 具有对应存储桶的读写权限
  • 存储桶名称必须与前面创建的存储桶名称完全一致
  • 地域 region 需要与存储桶所在地域匹配

3.3 安装部署

配置完成后,参考 私有化部署流程 进行部署。

4. 集群版配置安装

4.1 添加配置信息

编辑集群安装目录下的 config.yaml 文件:

配置文件生成

如果没有 config.yaml 文件,请先运行命令 ./wedaCli init 生成该文件

s3:
endpoint: cos.ap-guangzhou.myqcloud.com
port: 443
scheme: https
accessKey: # 填入您的 AccessKey
secretKey: # 填入您的 SecretKey
insecureSkipVerify: true

# 存储桶配置(需要与前面创建的存储桶名称一致)
defaultBucket: lowcode-static-{appid} # 对应 1.1 步骤创建的存储桶
cloudStorageBucket: lowcode-storage-{appid} # 对应 1.2 步骤创建的存储桶
ciSource: lowcode-ci-{appid} # 对应 1.3 步骤创建的存储桶

region: ap-guangzhou # 根据实际地域调整
pathStyle: false
集群版配置注意事项
  • 确保所有集群节点都能访问配置的 S3 存储服务
  • 验证网络连通性和访问权限
  • 存储桶名称必须与前面创建的存储桶名称完全一致

4.2 安装部署

配置完成后,运行以下命令进行部署:

# 启动集群部署
./wedaCli up

配置检查清单

在完成配置后,请确认以下项目:

  • ✅ 已创建三个必需的存储桶(static、storage、ci)
  • ✅ lowcode-static 存储桶已配置正确的权限策略
  • ✅ AccessKey 和 SecretKey 具有足够的权限
  • ✅ 网络连通性正常(防火墙、安全组配置)
  • ✅ 地域配置与存储桶实际地域一致
  • ✅ 存储桶名称在配置文件中正确填写

故障排查

如果遇到配置问题,请检查:

  1. 权限问题:确认 AccessKey 具有存储桶的读写权限
  2. 网络问题:检查服务器到 S3 服务的网络连通性
  3. 配置问题:验证存储桶名称、地域等配置信息的准确性
  4. 日志查看:通过系统日志排查具体错误信息