スキップしてコンテンツを表示

Secrets Manager Lambda 関数をローテーションする際に発生する「pg module not found」エラーを解決する方法を教えてください。

所要時間1分
0

AWS Lambda がシークレットをローテーションできなかった場合に、AWS Secrets Manager Lambda 関数のログに表示される「pg module not found」エラーを解決したいです。

簡単な説明

Lambda 関数が Python 3.7 から新しいバージョンに自動的にアップグレードされた場合、「pg module not found」というエラーが発生する場合があります。Python 3.9 などの新しいバージョンでは、必要なモジュールがサポートされていない場合があります。Lambda の各 Python バージョンでサポートされているモジュールとライブラリについては、「サポートされているランタイム」を参照してください。

解決策

Lambda 関数での Python のバージョンを確認する

次の手順を実行します。

  1. Lambda コンソールを開きます。

  2. ナビゲーションペインで [関数] を選択し、ローテーションに失敗した Lambda の名前を選択します。

  3. [コード] タブを選択します。

  4. ランタイム設定で Python のバージョンを確認します。

  5. [アクション] を選択し、[関数のエクスポート] を選択してから、[デプロイパッケージのダウンロード] を選択します。

  6. 非圧縮 .zip ファイルのディレクトリで、次の Linux コマンド find を実行します。

    find ./ -name “*cpython-*-x86_64-linux-gnu.so”
  7. Python ランタイムのバージョンが .so ファイルの名前に含まれていることを確認します。
    例: _cffi_backend.cpython-37m-x86_64-linux-gnu.so
    注: Python 3.7 の .so ファイルがあるものの、Lambda ランタイムでは新しいバージョンが表示される場合は、バージョンの不一致が示唆されます。この不一致は、CloudFormation テンプレートの更新プロセスによって解決する必要があります。

AWS CloudFormation テンプレートを更新する

この Lambda 関数の障害を解決するには、次の手順を実行します。

  1. Lambda 関数の作成に使用したスタックテンプレートを更新します。
  2. AWS::SecretsManager::RotationSchedule HostedRotationLambdaHostedRotationLambda オブジェクトに、Runtime プロパティを追加します。
  3. CloudFormation スタックを再デプロイして変更を適用します。
    CloudFormation により、Lambda のローテーション関数は Python 3.7 に戻ります。
    注: Python 3.7 では、ランタイムのキー値は python3.7 である必要があります。

関連情報

既存のローテーション関数を Python 3.7 から 3.9 にアップグレードする

AWS公式更新しました 5ヶ月前
コメントはありません

関連するコンテンツ