ラーニングノート(三)-lambdaのレイヤーが見つからないという問題について


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

初め

  今日はlambdaレイヤーを書いたのですが、テストを実行しているときに「アップロードされたレイヤーが見つからない」というプロンプトが出てきました。そこで、このプロセスを記録するために、ここで小さなテストを行いました。

操作

まず、ローカルにpythonフォルダを作成し、その中に特にシンプルなpythonファイルを作成してテストを提供してくれます。
file
file
pythonファイルが作成されると、zipアーカイブに圧縮されます。
file

そして、lambdaページを開いてレイヤーを作成します。
file

情報を入力してzip圧縮したpythonファイルをアップロードし、その後再確認してください。
file
file
次に、このレイヤーをテストするための別のlambda関数を作成します。関連する情報を入力して、あなたはいくつかのより多くのバージョンのpythonを選択することができます
file

そして、まずアップロードしたレイヤーをlambda関数に追加します。
file

追加するレイヤーが先ほどアップロードしたものであることを確認してください。
file
file
そして、テストコードを書きます。
file

関数の実行から返された結果 "Our layer module cannot be found" というエラーが出ます。
file

まとめ

  今のところこの問題の解決策を見つけられていませんが、私はレイヤーやラムダの名前を間違って付けてしまい、それが問題の原因だと思っていました。 しかし、その後、さらに2回トライしてみました。 結果は相変わらずです。 明日、解決策が見つかったら、こちらに更新します。

20210207 再度更新

みんな、私は上記の問題の解決策を見つけました、私は以前にzipのパスに惑わされていた、それは実際にはパスとは何の関係もありません。
ここで説明します。 新しいフォルダを作成し、その中に書き込んだpythonファイルを入れて、最後にzipで圧縮します。 ZIP パッケージの名前は python ファイルの名前と同じであることが望ましいという事実に特に注意してください。 そうしないと、lambdaでテストするときにレイヤーの名前をうっかりインポートしてしまうことになります。 代わりに、コード内にpythonファイルの名前をインポートする必要があります。 だからこそ、今悩んでいるのです。
下で再デモンストレーション。
pythonという空のファイルを作成し、layer.pyというファイルをpythonファイルに作成します。
file
file
書いたら圧縮します。
file

そして、それをamazon s3にアップロードします。
file

lambdaインターフェースに来て、レイヤーを作成します。
file
そして、テスト用のlambda関数を作成し、先ほどアップロードしたレイヤーを導入します。
file
file
そして、テスト用のテストコードを書きます。
file
テスト結果
file

Last modified: 2024-02-02

Author