2021-02-25|閱讀時間 ‧ 約 2 分鐘

記一次 lambda 使用 EFS 錯誤

    最近公司寫的系統要上線 , 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 起來處理以前的設定
    分享至
    成為作者繼續創作的動力吧!
    © 2024 vocus All rights reserved.