CI 團隊的 S3 測試素材 — 用 NetDrive 將 Amazon S3 掛載為磁碟機
將 Amazon S3 掛載為本機磁碟機代號,讓 CI 測試素材能以一般檔案路徑存取。這是 NetDrive 在 Windows 與 macOS 上為 DevOps 團隊提供的使用案例。
某後端團隊在 Amazon S3 上存放了 40 GB 的二進位測試素材,包括資料庫快照、預先渲染的媒體檔案與大型參考資料集。他們的整合測試套件會以一般檔案路徑讀取這些檔案。每當素材變動,舊的工作流程都一樣:aws s3 cp 會把數 GB 資料下載到每一台 CI 執行器,任何觸發流水線的人都得先等 25 分鐘才能開始測試。用 NetDrive 將 S3 儲存桶掛載為本機磁碟機,可以完全省去這道複製步驟——測試會直接透過 T:\fixtures\ 這樣的路徑讀取 S3 上的資料,不需要任何本機下載步驟。

將 S3 掛載為磁碟機代號——無需下載,無需改程式碼
NetDrive 讓 Google Drive、OneDrive、S3、SFTP、WebDAV 等在 Windows 與 macOS 上顯示為原生磁碟機 — 不需同步,也不需完整下載。
- 任何能讀取檔案路徑的應用程式都能自動運作
- 開機時自動掛載,讓磁碟機在任何人登入前就已就緒
- Wasabi 與 MinIO 與 Amazon S3 的運作方式相同
免費試用。提供終身與訂閱方案。
為什麼檔案路徑相容性在 CI 中很重要
大多數測試套件都是設計成從本機路徑讀取素材。若要把每一處素材參照都改成 S3 URL,就得動到數十個檔案,還可能連帶破壞本機端的開發體驗。更乾淨的做法是讓 S3 看起來就像本機磁碟機,既有的路徑就能不做任何修改地繼續運作。
NetDrive 可依 CI 執行器的需求,將 S3 儲存桶掛載為網路磁碟機、唯讀磁碟機或本機磁碟磁碟區。在 Windows 上,這會成為一個磁碟機代號(T:、S: 等),機器上的任何程序都能讀取。在 macOS 上,它會以 FUSE 磁碟區的形式出現在 /Volumes/ 或自訂路徑下。測試套件看到的是一個檔案系統;S3 API 呼叫則由 NetDrive 在背後處理。
大型素材檔案能可靠運作,是因為 NetDrive 會以區塊方式串流資料,並在網路小中斷時自動重試。超過 5 GB 的檔案會使用 S3 分段傳輸(自 NetDrive 3.5.434 起支援),因此素材大小實際上沒有上限。

將 S3 儲存桶設定為磁碟機
- 開啟 NetDrive,在磁碟機管理員中點選 + Add Drive。
- 從供應商清單中選擇 Amazon S3。
- 輸入你的 AWS Access Key ID 與 Secret Access Key。建議使用專屬的最小權限 IAM 角色——素材儲存桶設為唯讀,只在測試需要產生成品的地方才給寫入權限。
- 輸入 Bucket Name。自 NetDrive 3.19.7 起,區域會依儲存桶設定自動偵測,因此除非需要覆寫,否則可將區域欄位留空。
- 在 Drive Type 中,標準讀寫掛載請選 Network drive;若 CI 執行器不應寫回素材儲存桶,則選 Read-only drive。
- 將 Mount on 設為 Boot——這是與開發者工作站設定最關鍵的差異。開機時掛載能讓磁碟機在任何使用者登入前就可用,這正是無人值守的 CI 伺服器所需要的。
- 點選 Mount。
無論 Windows 的磁碟機代號或 macOS 的磁碟區路徑,現在都能被機器上任何程序存取,包括 CI 代理程式,即使沒有使用者工作階段在執行也一樣。

免登入自動掛載——無人值守 CI 伺服器設定
Mount on Boot 選項是讓 NetDrive 能實際用於 CI 基礎架構的關鍵。大多數 CI 執行器(Jenkins agent、GitHub Actions 自架執行器、GitLab agent)是以系統服務的形式啟動,而非使用者工作階段。只在使用者登入時才掛載的磁碟機,對這些代理程式來說是不存在的。
啟用開機掛載後,S3 磁碟機會在作業系統啟動完成的當下就已就緒。CI 代理程式會自動偵測到它——不需要登入、不需要腳本來執行掛載指令,也不會出現代理程式啟動與磁碟機出現之間的競態問題。

若需要以程式化方式進行掛載——例如根據分支名稱或流水線變數動態選擇要掛載的儲存桶——NetDrive 提供了 nd3cmd,這是一款自 NetDrive 3.8.921 起加入的命令列工具,可用於腳本化的磁碟機管理。目前 nd3cmd 的指令參考請參閱 NetDrive support forum,因為確切的旗標會依版本而異。
當測試產生成品(涵蓋率報告、渲染輸出、基準測試結果)時,同一個已掛載的磁碟機也能用於寫入。NetDrive 的背景上傳模式會先寫入本機快取,再非同步上傳到 S3,因此測試程序不必等待上傳完成。

地端 S3:MinIO 與 Wasabi
並非每個團隊都直接使用 AWS。有些團隊會在地端運行 MinIO,讓素材資料留在公有雲之外;也有團隊使用 Wasabi 做成本最佳化的冷儲存。NetDrive 自 3.4.398 起支援 S3 相容儲存供應商,並在 3.15.450 中加入了對 MinIO 的明確支援。
連接 S3 相容端點的方式:
- 點選 + Add Drive,選擇 S3 Compatible(而非 Amazon S3)。
- 輸入 MinIO 叢集或 Wasabi 區域端點的自訂端點 URL。
- 依照前述方式輸入儲存桶名稱與憑證。
- 以相同方式設定磁碟機類型與掛載觸發條件。
其餘設定步驟完全相同。就測試套件的角度而言,無論後端儲存是 AWS us-east-1、Wasabi 儲存桶,還是與 CI 執行器位於同一資料中心的 MinIO 叢集,T:\fixtures\ 始終是 T:\fixtures\。
結語
將 S3 掛載為磁碟機代號,是一種零程式碼變更的方式,讓 CI 流水線能存取存放在物件儲存中的大型素材庫。測試套件持續讀取本機路徑;S3 的轉換工作則交由 NetDrive 處理。開機時掛載意味著只要 CI 代理程式需要,磁碟機就一定在,無需任何手動介入。
若要在開發者的 Mac 上設定 S3 存取,請參閱 Mount Amazon S3 on macOS with NetDrive。若你的團隊也需要為較舊的素材提供具成本效益的冷儲存層,Mount Backblaze B2 on Windows with NetDrive 提供了以 Backblaze 相容 S3 API 的類似設定方式。
— Alex, NetDrive