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 指令:
指令 |
效果 |
|---|---|
|
上傳本機成品;回傳 |
|
將物件下載到本機路徑。 |
|
列出物件鍵(可加 |
|
刪除物件。 |
相同操作亦提供為 MCP 工具(ac_s3_upload / ac_s3_download / ac_s3_list /
ac_s3_delete),以及 Script Builder 中 Tools 分類下的指令。