基于阿里云OSS的文件存储微服务 | 安全、高效、多租户
| 项目 | 值 |
|---|---|
| 基础URL | |
| 数据格式 | JSON |
| 字符编码 | UTF-8 |
| 请求方法 | GET / POST / DELETE |
服务通过以下环境变量进行多租户配置:
HD_OSS_BUCKET = CHANNEL:OSS_BUCKET:OSS_ENDPOINT:BUCKET目录
HD_ALI_AK_SK = CHANNEL:阿里云AK:阿里云SK
HD_OSS_API = CHANNEL:虎咚OSS的AK:虎咚OSS的SK
采用 AK/SK密钥对 + 时间戳签名(SHA256) 的安全认证方式。每次请求签名不同,防止重放攻击。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
X-HD-AK | string | 是 | 虎咚OSS的AK(Access Key) |
X-HD-Signature | string | 是 | 签名值(SHA256十六进制) |
X-HD-Timestamp | string | 是 | 当前时间戳(秒),有效期5分钟 |
待签名字符串格式: HTTP_METHOD + "\n" + PATH + "\n" + TIMESTAMP + "\n" + BODY
签名计算: Signature = HMAC-SHA256(SK, StringToSign)
import hmac, hashlib, time
def generate_signature(sk, method, path, timestamp, body=''):
string_to_sign = f'{method}\n{path}\n{timestamp}\n{body}'
signature = hmac.new(
sk.encode('utf-8'),
string_to_sign.encode('utf-8'),
hashlib.sha256
).hexdigest()
return signature
# 使用示例
timestamp = str(time.time())
signature = generate_signature('your-sk', 'GET', '/api/v1/list', timestamp)
print(f'Signature: {signature}')
print(f'Timestamp: {timestamp}')
在此输入您的AK/SK和CHANNEL,可自动生成签名并测试API接口。
无需认证,检查服务状态和已加载的渠道列表。
{
"status": "healthy",
"channels": ["zhangsan", "lisi"]
}
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
prefix | string | 否 | 空 | 目录前缀 |
max_keys | int | 否 | 100 | 最大返回数 |
Content-Type: multipart/form-data
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
file | File | 是 | 要上传的文件 |
key | string | 否 | OSS中的文件路径 |
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
key | string | 是 | - | 文件路径 |
expires | int | 否 | 3600 | 有效期(秒) |
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
key | string | 是 | 要删除的文件路径 |
| HTTP状态码 | 说明 |
|---|---|
| 200 | 请求成功 |
| 400 | 请求参数错误 |
| 401 | 认证失败 (AK无效/签名错误/时间戳过期) |
| 404 | 接口不存在 |
| 500 | 服务器内部错误 |