--- tags: [全栈开发, 大作业, OSS, 阿里云] create time: 2026-05-10 --- # 阿里云 OSS 配置记录 ## 平台注册 - **平台**: 阿里云 OSS(对象存储服务) - **Bucket 名称**: hr-recruitment-hzh - **区域 / Endpoint**: cn-beijing / oss-cn-beijing.aliyuncs.com - **读写权限**: 私有(已关闭匿名访问和公开读) ## 访问密钥(AccessKey) > [!danger] 安全提醒 > - AccessKey Secret 是敏感凭据,**绝不提交到 Git** > - 如果曾在聊天窗口或日志中泄露过,请立刻去 RAM 控制台 **Reset** > - 已创建自定义最小权限策略,仅授权以下 4 个 Action(见下方) | 字段 | 值 | | ---------------- | ------------------------------ | | AccessKey ID | LTAI5t82VBCQSEyopZrR2S6w | | AccessKey Secret | baHMcsfsp7jiURqqdGV3xePta5wGFu | #### 自定义最小权限策略 RAM 控制台 → 权限管理 → 创建自定义策略,只授予以下 **4 个 API Action**: ```json { "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:PutObject", "oss:GetObject", "oss:DeleteObject", "oss:ListObjects" ], "Resource": [ "acs:oss:*:*:hr-recruitment-hzh/*" ] } ] } ``` > - `oss:PutObject` — 前端直传简历文件 > - `oss:GetObject` — 下载/预览文件 > - `oss:DeleteObject` — 清理过期文件 > - `oss:ListObjects` — 列出目录内容(可选) > - `Resource` 精确限定在 `hr-recruitment-hzh` Bucket,不触及任何其他资源。 | 字段 | 值 | | ---------------- | ------------------------------ | | AccessKey ID | LTAI5t82VBCQSEyopZrR2S6w | | AccessKey Secret | baHMcsfsp7jiURqqdGV3xePta5wGFu | ## 项目中的使用位置 根据架构设计,OSS key **仅存在于 Logic gRPC 服务** 中,Web 网关层不接触密钥: ``` logic-grpc-service/.env ← 实际密钥(不进 Git) logic-grpc-service/.env.example ← 模板文件(进 Git) logic-grpc-service/internal/oss/client.go ← SDK 初始化读取 .env logic-grpc-service/internal/oss/signer.go ← 生成签名 URL ``` ### .env.example 模板内容 ```bash # logic-grpc-service/.env.example OSS_ACCESS_KEY_ID=your-access-key-id OSS_ACCESS_KEY_SECRET=your-access-key-secret OSS_ENDPOINT=oss-cn-hangzhou.aliyuncs.com OSS_BUCKET_NAME=your-bucket-name ``` ### 对应 .gitignore 配置 ```gitignore # logic-grpc-service/.gitignore .env ``` ## 使用流程回顾 1. 后端通过 AccessKey 初始化 OSS Client 2. 前端请求上传简历时,Logic 服务调用 `GenOssSign` → 生成临时签名 URL(通常 30min 过期) 3. 前端拿着签名 URL 直接向 OSS PUT 文件,**服务端不缓存任何字节** 4. 上传完成后前端传 fileKey → Logic 将 fileKey 写入 MySQL 简历表