最近公司寫的系統要上線 , EFS 的存取點套用開發時設定出問題
背景是這樣的
開發 : 存取點 path 設 /xxx , 使用者和群組 id 設 1000 , 目錄使用者和群組 id 也設 1000 , 權限開 0600 (owner 可讀可寫)
上線 : 設定如同開發
神奇的事情出現了 , 開發的EFS 可以正常讀寫 , 上線的卻遇到 open file 有 permission denied
為什麼?
經過今天跟網管一起實驗 , 終於知道為什麼了
直接說重點 , 在 aws console 設定存取點 , 不太會更動到 EFS 上的目錄 , 即使存取點有設目錄
一個例子體現這點是新增存取點 , 然後刪除 , 接著開 EC2 的機器 mount EFS
在掛載目錄下 ls , 可以看到之前建的存取點產生的目錄
新增存取點設同樣的目錄也一樣 , cosole 不會先刪除之前建的目錄再新增
回到開頭的情況 , 0600 是無法被 mount 的 , 所以 lmabda open file 會有問題
那開發怎麼沒問題?
是因為先前建立的存取點 , path 設 /xxx , 目錄權限設 0777
刪除後 , 再新開存取點 , path 設一樣 , 目錄權限設 0600
記得之前講的嗎?
存取點不太影響 EFS , 所以此時新存取點的 path , 目錄權限是 0777
所以才造成開發的存取點讀寫檔案沒問題
結論
EFS 設定存取點有問題時 , 不彷實際 mount 看看 , aws console 不太會去處理 EFS 上的東西 , 有時要開主機 mount 起來處理以前的設定