この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
初め
今日はlambdaレイヤーを書いたのですが、テストを実行しているときに「アップロードされたレイヤーが見つからない」というプロンプトが出てきました。そこで、このプロセスを記録するために、ここで小さなテストを行いました。
操作
まず、ローカルにpythonフォルダを作成し、その中に特にシンプルなpythonファイルを作成してテストを提供してくれます。
pythonファイルが作成されると、zipアーカイブに圧縮されます。
そして、lambdaページを開いてレイヤーを作成します。
情報を入力してzip圧縮したpythonファイルをアップロードし、その後再確認してください。
次に、このレイヤーをテストするための別のlambda関数を作成します。関連する情報を入力して、あなたはいくつかのより多くのバージョンのpythonを選択することができます
そして、まずアップロードしたレイヤーをlambda関数に追加します。
追加するレイヤーが先ほどアップロードしたものであることを確認してください。
そして、テストコードを書きます。
関数の実行から返された結果 "Our layer module cannot be found" というエラーが出ます。
まとめ
今のところこの問題の解決策を見つけられていませんが、私はレイヤーやラムダの名前を間違って付けてしまい、それが問題の原因だと思っていました。 しかし、その後、さらに2回トライしてみました。 結果は相変わらずです。 明日、解決策が見つかったら、こちらに更新します。
20210207 再度更新
みんな、私は上記の問題の解決策を見つけました、私は以前にzipのパスに惑わされていた、それは実際にはパスとは何の関係もありません。
ここで説明します。 新しいフォルダを作成し、その中に書き込んだpythonファイルを入れて、最後にzipで圧縮します。 ZIP パッケージの名前は python ファイルの名前と同じであることが望ましいという事実に特に注意してください。 そうしないと、lambdaでテストするときにレイヤーの名前をうっかりインポートしてしまうことになります。 代わりに、コード内にpythonファイルの名前をインポートする必要があります。 だからこそ、今悩んでいるのです。
下で再デモンストレーション。
pythonという空のファイルを作成し、layer.pyというファイルをpythonファイルに作成します。
書いたら圧縮します。
そして、それをamazon s3にアップロードします。
lambdaインターフェースに来て、レイヤーを作成します。
そして、テスト用のlambda関数を作成し、先ほどアップロードしたレイヤーを導入します。
そして、テスト用のテストコードを書きます。
テスト結果