株式会社ヴァンデミックシステム

Blog

<スポンサーリンク>

layersディレクトリの中に、hello_layerというものがあり、これをLambdaから読み込みたい。

hello.pyで、 module1ディレクトリ内のmodule1.pyを読み込みたいわけだけれど、通常のpythonの相対インポートの書き方だとどうもうまくいかない。

だめな例

うまくいく例

module1.py

Lambda本体側の書き方。

通常のZip形式かImage形式かで、layerのインポート方法が変わる。

通常のZip形式の場合

Lambdalayerは/opt/pythonディレクトリにマウントというかコピーされ、PATHが通っている状態。
なので、hello.pyのファイル名のhelloをimportすれば良い。

 

Image形式の場合

Dockerfileをこのように書く
ここでミソなのは、layerを/opt/pythonディレクトリに配置するところ。
Zip形式と同様に、/opt/pythonディレクトリにPATHが通っており、このディレクトリに配置しておくことで、モジュール名で読み込めるようになる。

app.pyはZip形式と同じ

<スポンサーリンク>

コメントを残す

Allowed tags:  you may use these HTML tags and attributes: <a href="">, <strong>, <em>, <h1>, <h2>, <h3>
Please note:  all comments go through moderation.

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)