一句話:簽 URL 時填的 method,就框死了這條 URL 允許的動作,而且 method 被簽進簽章、改不了——所以一條 pre-signed URL 只能做一件事。
| method | 用途 | 典型場景 |
|---|---|---|
GET | 下載 / 讀取 | 給使用者限時下載連結 |
PUT | 上傳 / 覆寫 | 讓前端直接把檔案傳進 bucket |
HEAD | 只讀 metadata | 探測物件存不存在、多大 |
回想 Level 3 會講的機制:method 是 canonical request 的第一行,會被算進簽章。所以如果對方拿一條簽成 GET 的 URL 去發 PUT 請求,S3 重算簽章時第一行就不一樣、算出的簽章對不上,直接回 SignatureDoesNotMatch。
比喻:同一個門牌,你可以簽一張「限時取件單」(GET)、也可以簽一張「限時放件單」(PUT)。拿取件單的人不能拿去放件——門房只認單上寫的動作。
同一個物件,如果既要能下載、又要能上傳,就簽兩條 URL:一條 GET、一條 PUT。沒有「一條搞定全部動作」的 pre-signed URL——這正是它「權限收斂、好控管」的體現:每條 URL 的能力都窄而明確。