作者:張醫博
淺談
本章介紹一些基本的 oss 的咨詢内容,問題是一直在補充的,不定期的進行更新;
問:cdn 結合 oss,oss 位址被暴露後如何處理
答:
- 暴露後無法組織别人通路你,先将 bucket private 設定為私有禁止讀寫。
- 在阿裡 cdn 上開啟私有回源 oss 功能,讓所有請求隻能通過 cdn 回源。
- cdn 上開啟鑒權,所有通路必須攜帶授權的合法秘鑰。
問:跨國通路超過 1s 優化建議?
- 在國外北美或者亞太 region 建立一個海外的 bucket 。
- 如果友善的情況下,可以購買一台和 bucket 同 region 的 ECS 走内網上傳,也會提升性能。
-
bucket 初始化的代碼把 crc64 關掉,也可以優化上傳的性能。
= oss2.Bucket(auth, 'endpoint', 'bucket',enable_crc=False)
問:oss bucket 怎麼提高數量?
- oss bucket 預設是 30 個,合理的利用 bucket preifx 和 RAM 政策可以給每一個使用者配置一個單獨的 prefix 即可,這樣一勞永逸。
- 如果特殊業務需求提供工單到阿裡雲再分析處理。
問:ossutil64 有限速功能嗎?
- 可以通過兩個參數控制下多檔案的上傳并發 -jobs -parallel
- 限速功能是一個後期規劃。
問:通路 OSS 比較慢有什麼優化建議?
- 使用内網位址通路 OSS
- CDN + OSS 的模式服務
- 大檔案使用斷點上傳、下載下傳(既能分片還能斷點)
問:檔案被删除怎麼查
答:最好先開通 oss log 功能後自己查詢,如果之前沒有開啟 log ,很難查到,可以嘗試送出工單找到阿裡雲進行處理。
問:檔案進行壓縮的條件
-
Conetnt-Type 必須是以下幾種之一:
“text/cache-manifest” “text/xml” “text/plain” “text/css” “application/javascript” “application/x-javascript” “application/rss+xml”
- 用戶端發起的請求中必須要含有 "content-Encoding:gzip" 頭才可以。
問:事件通知不生效
- 如果是控制台上傳必須要配置 postobject 通知類型,最好配置全部類型的事件通知,一勞永逸。
- 确認是否上傳成功,标準是 oss 傳回的上傳狀态碼是 200 ,并且 response header 中必須有 requestID。
- 确認 oss 設定的 mns 通知隊列或者 topic 是否正常,有沒有寫錯,是否可以正常收到消息。
- 用戶端的通知位址網絡、應用是否正常。
- 設定的觸發 prefix 是否正确。
問:You have no right to access this object because of bucket acl
- OSS 私有的,使用者沒權限通路。
- 使用者通路的檔案是歸檔的沒有解凍。
- OSS 私有的,使用者通路攜帶的鑒權資訊不對。
- 使用者請求 OSS 是用子賬号請求,子賬号的政策不夠。
問:浏覽器播放視訊有聲音沒視訊,本地播放正常
如果是本地播放起可以播放可以證明 oss 的檔案沒問題,就是浏覽器相容問題,可以通過這個工具檢測一下 tool
問:InvalidPolicyDocument
答:使用者的請求中出現一個非法操作參數 “Content-type” 請檢查使用者是否在政策中配置了。
問:本地計算的 MD5 源檔案和 Content-MD5 一緻 但是報 InvalidDigest

- OSS 的接收到的 MD5 value 值必須是大寫的
- OSS md5 要求是 128bit 的值然後經過 base64 編碼得到 24 位。
- Content-MD5 要大寫。
問:Header 簽名中如何添加過期時間
答:OSS Header 簽名的方式不支援定義過期時間。
問:Android-SDK 目前支援 Android9.0 ?
答:支援
問:OSS 生命周期生效時間
答:執行時間為不大于使用者設定過期 Days + 2天 ,舉例 ,目前上傳了一個 檔案 ,last-modify 是 11 19 号,12:00,保留時間 30 天 執行計劃任務的時間就是,11 19 12:00 + 30 天 + 2天 = 12 21 号會執行删除(不超過這個時間點)
問:批量删除 OSS 的檔案
- 第一種,如果檔案在不同的 prefix 下,prefix 彼此同級,可以多次調用 ossutil 去删除。
- 第二種,通過 SDK 删除,在程式中通過 thread 多線程調用 delete ,傳入不通的 prefix 删除,可以參考。 删除
問:存在 OSS 的視訊檔案通過浏覽器不能播放
- 先把檔案下載下傳本地看是否能播放,本地可以播放,放到浏覽器不行那就說明視訊的編碼可能出現問題浏覽器不能解碼導緻。
- 可以用 ffprobe 或者 ffplay 播放一起看看有什麼異常資訊,如下視訊出現 TNS 錯誤,浏覽器無法解碼播放。
OSS 咨詢
問:The bucket you are attempting to access must be addressed using the specified endpoint.Please send all future requests to this endpoint.
- 通路 CDN 的賬号和 bucket 不是一個。
- 客戶通路的 bucket 和 endpoint 寫錯。
- 客戶通過域名通路,域名沒有和 OSS 綁定。
- OSS 通過 CDN 通路,回原到 OSS 沒有加 host 頭資訊。
問:通路 OSS 發生 301 跳轉
- 先直接固定 OSS 通路,使用 https 測試,如果發生了 301 ,再繼續檢查下自己的回原設定,如果設定比對字首後者其他目錄規則的,就觸發了 301 跳轉,屬于正常現象
- 如果客戶沒有設定 301 ,可以直接切成 https ,然後抓包看下是否被劫持了。
問:OSS 上傳後沒有回調沒通知
- 事件通知 10 分鐘後才能生效;
- 控制台上傳要配置 postobject 回調;
- 确認檔案是否上傳成功,隻有傳回 http.status==200 && requestID !=None 才算成功,其他并不保證是準确的判斷;
- 如果以上都已經确認正常,那就是 mns 沒有将消息發出去;
問:為什麼 oss 的資源會自動加上 Content-Disposition
-
由于網絡安全的管理要求,所有存在 oss 的資源不能直接作為網頁直接展示,必須要加上 Content-Disposition: attachment; filename={filename}
隻有在 oss 綁定了自己備案的域名後才能線上展示出來。
- 綁定好域名後,oss 會自動将 Content-Disposition 去掉,不用手動操作。
問:阿裡雲oss browser上傳檔案如何跳過已經存在的。
答: 不支援
問:nginx proxy 到 OSS 異常
答:類似問題請檢查下 OSS 控制台上,域名綁定是否已經關聯了使用者的域名,如果沒有請綁定域名,否則通路會出現異常,或者使用者将回源的 host 改為 OSS 的通路域名也可。