我們有個需求是要將資料上傳到 Storage,原本的流程是先到 Cloud Run(AWS 的 ECS) 再轉丟到 Cloud Storage,但 Cloud Run 的 Bandwidth limits 有限制,所以後來改將服務掛到 GKE 上,改用 GKE 上傳。
在現有的架構上,因為走 GKE 要先經過 ALB → GKE → S3,多了 ALB 的費用,以及 GKE 要維護的 Effort,非常不人道。事先確認了一下是否在 GKE 上需要做類似 Data 預處理的 Features,確認沒有。所以提出了改用 Storage Signed URL 的方式(S3 也有)。直接從用戶端發送給 Storage,我們只需確認是否要發這個 URL 給用戶就好。
signed URL 的特點是你產生出來的時間可以自己自定義(最長7天),然後他可以限制 Read or Write 權限。改成走這條路後,我們可以很輕鬆地省掉兩件事
監控是否用戶上傳有掉包或是上傳導致 instance 過載
節省費用,包含 NEtwork 以及 GKE 的維護