0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Python] ローカルでは動作するのにAWS環境のLambdaでコードが動作しない問題

Posted at

概要

  • paramikoを使ってSFTP送信処理を実装
  • ローカルでは問題なく動作していたが、AWSの開発環境にLambdaとレイヤーをデプロイするとライブラリが不足している旨のエラーが発生する
Unable to import module 'sftp_file_uploader': libffi.so.6 cannnot open shared object file: No such file or directory.

環境

  • Python(v3.13.1)
  • paramiko(v3.5.1)
  • Cloud9(Platform: Amazon Linux 2)
    • ここでGit環境のコードをLambdaをデプロイ
  • Lambda(Runtime: Python 3.13)

原因

  • Lambdaの実行環境(Python3.13)と、デプロイ時の環境(Amazon Linux 2)に差分があった
  • エラー発生時は、Cloud9上のPlatformを Amazon Linux 2 にして、ライブラリをビルドしたものをパッケージ化していたが、現在のLambdaのPython 3.13ランタイムは、 Amazon Linux 2023(AL2023) ベースに変わっている

AL2023環境では、libffi ライブラリのバージョンが上がり、libffi.so.6 が廃止され、libffi.so.8 になったため、古い libffi.so.6 を必要とするパッケージが動かなくなっている

アップロードしたZIPやレイヤーに含まれているライブラリ(例:paramiko, cffi, cryptography など)は、古いAmazon Linux 2(AL2) ベース環境用にビルドされており、 libffi.so.6 を参照しようとして失敗している

解決方法

  • ライブラリをビルドする環境をAL2023にする
  • 作成したパッケージをレイヤーに追加(CloudFormationでテンプレート化されている場合は不要)

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?