AWSの代表的なサーバレスサービスであるLambdaを使用して、簡単なPythonプログラムを作成していきます。
今回は外部モジュールも取り入れたプログラムにしたいと思います。
目次
● コードの編集
Lambda関数の作成
最初に、Lambda関数を作成しましょう。
ランタイムには「Python」を選択し、「関数の作成」を押下します。
(バージョンは2024年5月時点の最新を選択)
関数が作成できました。
Lambdaはデフォルトでも動作するようにあらかじめコードが記述されており、試しに動作させてみると「Hello from Lambda!」とレスポンスが返ってきました。
コードの編集
では早速コードを編集しましょう。
現在は「Hello from Lambda!」という文字列がレスポンスされるプログラムとなっていますが、「おはよう」「こんにちは」という文字列が配列でレスポンスされるコードに変更します。
def lambda_handler(event, context):
# 配列に値をセット
array = ["おはよう", "こんにちは"]
return {
'statusCode': 200,
'body': array
}
実行します。
正しく動作しました。
次に、「numpy」という外部ライブラリをインポートし、numpyのappendメソッドを使用して配列に「こんばんは」という文字列を追加します。
import numpy
def lambda_handler(event, context):# 配列に値をセット
array = ["おはよう", "こんにちは"]
#「こんばんは」を追加
array = numpy.append(array, ["こんばんは"]).tolist()return {
'statusCode': 200,
'body': array
}
実行します。
怒られました
No module named 'numpy'
→ numpyなんてモジュールは無いよって言われています。
あれ?
Lambdaってpipコマンドどこから叩くの?コンソールとかあるの?
外部ライブラリの準備
色々な方法がありますが、今回はLambdaレイヤーを使用した方法で進めていきます。
ローカルPCを使用し、numpyライブラリをインストールします。
Lambda関数がpython3.12なので、ローカルのpythonも3.12をインストールし、pipコマンドを実行します。
pip install numpy -t ./python
インストール先は必ずpythonディレクトリ上を指定してください。
ここはかなりの落とし穴なのですが、これはLambdaレイヤーの命名規則で決まっており、この形でないと正しく読み込むことができません。
インストール後、pythonディレクトリごとzip形式で圧縮します。
zip -r upload.zip *
Lambdaレイヤーの作成
次に、Lambdaレイヤーを作成します。
numpyライブラリが詰まったzipファイルをアップロードします。
「互換性のあるランタイム」には、Lambda関数のPythonのバージョンと合わせてください。
作成できました。
Lambdaレイヤーと関数の紐付け
次に、レイヤーをLambda関数と紐付けます。
「カスタムレイヤー」を選択し、作成したLambdaレイヤーを選択します。
「バージョン」は最新のものを選択します。
関数とレイヤーとの紐付けが完了したら、再度実行します。
numpyライブラリが読み込まれ、正しく動作しました。
Lambdaレイヤーはとても便利
Lambda x Pythonでの外部ライブラリの指定方法は、かなり詰まるポイントかと思います。
Lambdaレイヤーはとても便利で、今回のような外部ライブラリの指定だけに留まらず、Lambda関数間での共通ライブラリなど、共通で使用する処理等の置き場所としても打ってつけです。
良きLambdaライフを!