S3 上传器
当自动化运行需要持久化产物存储时使用此技能:CSV报告、PDF、JSON检查点、截图、模型输出或日志等,这些文件应能存在于本地机器之外。该助手目标为通用S3兼容存储,并仅通过环境变量读取桶、端点和凭据。
何时调用
- 用户说:“将此报告上传到S3”、“保存产物到对象存储”、“下载上次运行的文件”、“使用MinIO/R2/Spaces”。
- 对话中的代码在本地写入文件,但需要一个可移植的交接或归档位置。
何时不调用
- 产物仅在同一进程内需要;保留在磁盘上即可。
- 用户需要一个带缓存失效和签名URL的公共网站CDN工作流。
具体示例
用户输入:
爬虫完成后,将生成的CSV上传到我的S3兼容存储桶。
输出:
# 将 assets/s3.py 复制到你的项目中,然后:
from s3 import upload_file
key = upload_file("out/daily_report.csv", key="reports/daily_report.csv")
print("已上传:", key)
该助手从环境中读取 S3_BUCKET、S3_ACCESS_KEY_ID、S3_SECRET_ACCESS_KEY、可选的 S3_ENDPOINT_URL 以及可选的 S3_REGION。不会提交任何特定于目标或机密的代码。
应用模式
- 将桶名、端点、访问密钥和秘密密钥仅保存在环境变量中。
- 使用确定性对象键,例如
reports/YYYY-MM-DD/name.csv,以便于重运行时查找。 - 仅在本地文件完成后上传;切勿流式传输半写成的产物。
- 通过传递
endpoint_url支持S3兼容端点,而不是硬编码AWS。 - 当环境变量或客户端库缺失时,以清晰的配置错误信息失败。
参考:assets/s3.py。
来源
从作者自动化项目的生产使用中提炼。v1.0.0。 另见:[[csv-report-writer]],[[playwright-pdf-snapshot]],[[pipeline-orchestrator]]。
→ 使用Trawlkit构建完整的可运行机器人。