跳至內容

如何解決 Secrets Manager Lambda 函式輪換中的「pg module not found」(找不到 pg 模組) 錯誤?

1 分的閱讀內容
0

我想解決當 AWS Lambda 無法輪換密碼時,AWS Secrets Manager Lambda 函式日誌中的「pg module not found」(找不到 pg 模組) 錯誤。

簡短描述

如果 Lambda 函式會自動從 Python 3.7 升級到較新版本,那麼您可能會收到「pg module not found」(找不到 pg 模組) 錯誤。較新的版本 (例如 Python 3.9) 可能不支援所需的模組。如需了解 Lambda 中各個 Python 版本支援的模組和程式庫,請參閱支援的執行時期

解決方法

檢查 Lambda 函式 Python 版本

請完成下列步驟:

  1. 開啟 Lambda console (Lambda 主控台)。

  2. 在導覽窗格中,選擇 Functions (函式),然後選擇未輪換的 Lambda 的名稱。

  3. 選擇 Code (程式碼) 索引標籤。

  4. 在執行時期設定中,記下 Python 版本。

  5. 選擇 Actions (動作),選擇 Export function (匯出函式),然後選擇 Download deployment package (下載部署套件)。

  6. 從未壓縮的 .zip 檔案的目錄中執行以下 find Linux 命令:

    find ./ -name “*cpython-*-x86_64-linux-gnu.so”
  7. 檢查 .so 檔案的名稱中是否包含 Python 執行時期的版本。
    例如,_cffi_backend.cpython-37m-x86_64-linux-gnu.so
    **注意:**如果您找到 Python 3.7 .so 檔案,但 Lambda 執行時期顯示較新版本,則證實版本不符。您必須透過 CloudFormation 範本更新程序解決此不相符的問題。

更新 AWS CloudFormation 範本

若要解決 Lambda 函式失敗的問題,請完成以下步驟:

  1. 更新用於建立 Lambda 函式的堆疊範本
  2. Runtime 屬性新增至 AWS::SecretsManager::RotationSchedule HostedRotationLambda 中的 HostedRotationLambda 物件。
  3. 重新部署 CloudFormation 堆疊以套用變更。
    CloudFormation 將 Lambda 輪換函式變更回 Python 3.7。
    **注意:**對於 Python 3.7,Runtime 鍵值必須為 python3.7

相關資訊

將現有的輪換函式從 Python 3.7 升級到 3.9

AWS 官方已更新 6 個月前