S3 相容成品儲存

一次執行產生的報告、螢幕截圖與螢幕錄影,通常值得存放到 runner 之外。 S3ArtifactStore 可對任何 S3 相容儲存桶(AWS S3、MinIO、Cloudflare R2…)上傳、下 載、列出與刪除這些成品。

boto3 為**選用**相依(pip install je_auto_control[s3]):S3 client 可注入,因 此儲存體的邏輯可用假 client 完整單元測試,且僅在未提供 client 時才匯入 boto3。整個 API 皆相對於儲存體設定的 prefix —— upload 回傳儲存體相對鍵,``download`` / delete / url 原樣接受,而 list 則會把 prefix 去除。不匯入 PySide6

無頭 API

from je_auto_control import S3ArtifactStore

store = S3ArtifactStore("my-bucket", prefix="runs/42")   # boto3 client 延遲建立
key = store.upload("report.html")          # -> "report.html"(相對)
store.url(key)                             # -> "s3://my-bucket/runs/42/report.html"
store.download(key, "local/report.html")
store.list()                              # -> ["report.html", ...]
store.delete(key)

測試或非 AWS 後端可傳入自己的 client:S3ArtifactStore("bucket", client=my_client)

Note

實際的 AWS 路徑需要 boto3 與憑證,因此不會在 CI 中執行;儲存體邏輯以假 S3 client 驗證。

執行器指令

模組層級的預設儲存體 —— 以 configure_default_store(bucket, client=None, prefix="") 設定一次 —— 支撐 executor/MCP 指令:

指令

效果

AC_s3_upload

上傳本機成品;回傳 {key}

AC_s3_download

將物件下載到本機路徑。

AC_s3_list

列出物件鍵(可加 prefix)。

AC_s3_delete

刪除物件。

相同操作亦提供為 MCP 工具(ac_s3_upload / ac_s3_download / ac_s3_list / ac_s3_delete),以及 Script Builder 中 Tools 分類下的指令。