其他
需要为项目接入或替换 S3 兼容对象存储并管理…
当项目需要 S3 兼容对象存储(上传、资产、备份、预签名 URL、bucket 策略、凭证或配额检查)并希望用 Sealos 对象存储替代本地 MinIO/S3 时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 57/100 ×0.15
适用场景
需要为项目接入或替换 S3 兼容对象存储特定
解决思路
- 接到 `/sealos-s3` 或 bucket、object、policy、credentials、presign、quota 请求时,按 `sealos-s3` 技能处理,并通过 `sealos-cli s3` 执行 cloud-local-mutation,可选做脱敏部署交接。
- 使用 canaries `S3-PRIVATE-REUSE`、`S3-CONFIRM-PUBLIC`、`S3-REDACT-OBJECT` 作为私有复用、公开确认、对象脱敏的检查点。
- 接受项目路径和对象存储意图;先分析,列出现有 buckets,创建或复用私有存储,仅在需要时初始化凭证,并接线最小的现有 env-key 集合。
- 保留本地 MinIO/Compose fallback;公共策略、轮换、删除和破坏性对象变更保持门禁。
- 默认保持 bucket 为 `private`。
- 在公开策略、为活跃应用轮换凭证、删除 bucket/对象或替换应用存储配置前先询问。
- 永远不要在最终答案中打印 secret keys、完整 S3 凭证块、kubeconfig、auth 文件或复制的 env 值。
- 默认使用 `sealos-cli` 的 JSON 输出并解析它,而不是从表格输出中抓取 secret。
- 将 `s3 secret` 输出视为敏感,即使 CLI 能打印它。
- 未经确认或保留旧值,不要覆盖现有 env 值。
- 不要提交 `.env`、`.env.local`、S3 access keys、secret keys、kubeconfig 或 Sealos auth 文件。
- 对每个请求按顺序执行:analyze -> resolve account/workspace -> list -> create or reuse -> wait for secret -> wire -> object-flow -> cleanup。
- 对每个请求解析项目、分析存储需求、确认 CLI/auth/region/workspace、先 list 再 create/reuse、等待凭证就绪、接线现有 keys、证明认证上传/读取或 presign 路径、清理临时对象、报告策略状态。
- 发出请求范围的 `success`、`stopped` 或 `error`;遇到 workspace 歧义、缺少凭证就绪或 tracked env target 时,在变更前停止请求。
- 确保 bucket 身份、策略、命名空间和 env 变更保持请求范围。
- 按阶段到达时逐层加载 analyzer、bucket、policy、credential、object-flow 和 cleanup 过程;CLI 细节之前保持 private policy、confirmation 和 redaction canaries 可见。
- 用 `pwd` 或 `git rev-parse --show-toplevel` 确认工作目录。
- 有项目目录时运行 `node <SKILL_DIR>/scripts/analyze-project-s3.mjs <project-dir>`。
- 将 analyzer 结果作为起点,编辑前检查它引用的真实文件;保留其不打印 secret 值的行为。
- 优先使用现有 `sealos-cli` 二进制:运行 `sealos-cli --version`、`sealos-cli s3 --help`、`sealos-cli whoami`。
- 未安装时用 `npx -y sealos-cli@latest ...` 执行一次性命令;全局安装前先询问。
- 认证缺失或过期时运行 `sealos-cli login <region>`、`sealos-cli workspace list`、`sealos-cli workspace current`。
- 使用用户期望的 workspace;存在多个且目标不明确时,在 provisioning 前询问;注意 `sealos-cli s3` 从当前 kubeconfig namespace 推导对象存储用户,workspace 错误会导致 bucket 和凭证错误。
- 先列出现有 buckets:`sealos-cli s3 buckets -o json`。
- 当现有 bucket 用途与策略匹配时复用;当无合适 bucket 或用户要求新 bucket 时创建:`sealos-cli s3 create-bucket <bucket-name> --policy private -o json`。
- 除非用户明确需要公共读写,否则使用 `private`;接受策略为 `private`、`publicRead`、`publicReadwrite`;别名如 `public-read` 会规范化为 `publicRead`,但在说明和脚本中使用规范值。
- 仅在应用环境接线或对象操作需要时获取凭证:`sealos-cli s3 secret -o json`。
- 该命令会在不存在时创建 `ObjectStorageUser`,并短暂等待状态;凭证未就绪时等待几秒重试,不要手动创建原始 CRD。
- 使用 `references/sealos-cli-s3.md` 了解当前命令契约和响应处理。
- 只映射项目已经使用的环境变量键。常见映射:AWS SDK/S3 通用用 `S3_ENDPOINT`、`S3_ACCESS_KEY_ID`、`S3_SECRET_ACCESS_KEY`、`S3_BUCKET`;AWS 风格配置用 `AWS_ACCESS_KEY_ID`、`AWS_SECRET_ACCESS_KEY`、`AWS_REGION`、`S3_BUCKET`;替换 MinIO 用现有 `MINIO_*` 键,或仅当应用支持时迁移到现有 S3 键;上传库用 adapter/config 文件读取的键。
- 本地笔记本开发使用 `secret.external` 的 endpoint;仅当应用运行在 Sealos/Devbox 且运行时能访问内部 endpoint 时使用 `secret.internal`。
- 编辑 env 文件前阅读 `references/env-integration.md`。
- 运行最小的真实项目路径验证对象存储:若仓库有上传并读取对象的脚本或测试,运行它。
- 否则用 `sealos-cli s3 upload` 上传一个小本地测试文件,列出它,下载到临时路径,然后删除测试对象。
- 对 presigned URL 功能,运行 `sealos-cli s3 presign <bucket> <key> --expires 3600 -o json`,且仅当这是请求工作流的一部分时验证 URL。
- 仅在连接非 Sealos 的 S3 兼容 endpoint 时同时使用 `--endpoint`、`--access-key`、`--secret-key`;不要混用部分覆盖。
- 报告结果时总结:bucket 名称、策略、区域/workspace、就绪状态。
- 报告更新的 env 文件和键,不泄露 secret 值。
- 报告验证命令和结果。
- 报告任何公共策略、凭证轮换或清理后续。
- 连接现有项目:运行 analyzer;检查它引用的 env/config 文件;列出现有 buckets;创建或复用匹配 bucket;用 `s3 secret` 获取凭证;只写应用读取的 env 键;验证应用存储路径。
- 替换本地 MinIO 用于开发:识别指向 MinIO 或 S3 兼容服务的应用服务 env vars;创建或复用私有 Sealos bucket;只更新应用本地 env 文件,不更新 compose 文件,除非用户要求移除 MinIO;保持本地 Compose 回滚简单,原 MinIO 服务仍可用。
- 上传或分享项目资产:确认目标 bucket 和对象 key 前缀;用 `sealos-cli s3 upload <bucket> <file> --key <key> -o json` 上传;尽量用 `presign` 临时分享而不是公开 bucket 策略;验证后删除临时测试对象。
- 在 `success` 中包含 bucket 身份/策略/就绪、workspace、env 键名、认证对象或 presign 证明、清理状态和脱敏状态。
- 在 `stopped` 中包含模糊 workspace、不可用凭证就绪、tracked env target、公共策略、轮换、替换或破坏性确认边界,并给出安全的 private/presign 替代;不要声称执行了受门禁操作。
- 在 `error` 中包含 analyzer、CLI、policy、credential、object 或 env-write 步骤,脱敏诊断类别,受影响 artifact,以及带凭证、endpoint 和连接值已脱敏的恢复动作。
- 可选部署交接使用完整 tuple:target: sealos-deploy;inputArtifact: private bucket identity, policy, approved env-key contract, credential-readiness state, and object-flow proof;allowedAction: consume approved ObjectStorageBucket/Secret wiring within selected deployment scope;failureReturn: sanitized diagnostic with failed phase;responseOwner: sealos-s3。接收方重新检查部署范围和运行时证据。
- 直接 S3 请求使用 `target: none` 并保留相同证据字段。
- 验证时使用 `analyze-project-s3.mjs`、`sealos-cli s3` JSON 输出、认证对象流证据,以及基线用例 `s3-positive-private-round-trip` 和 `s3-violating-unconfirmed-public-or-rotation`;成功前验证私有策略、env 保留和脱敏。
- 记住该技能基于 `zjy365/sealos-cli#28`,它注册了 `s3` 命令并实现 bucket CRD 操作与 S3 兼容对象操作。
适用边界 · 注意事项
- 不适用于没有 Sealos 账号、区域/workspace 或无法使用/登录 `sealos-cli` 的场景。
- 不适用于不需要 S3 兼容对象存储,或只想保留本地文件/非 S3 存储且不修改环境变量的场景。
- 不适用于用户拒绝确认公开策略、凭证轮换、删除或替换存储配置等门禁操作时;此时只能停在安全 private/presign 替代。