AWS Lambda 関数で Python スクリプトを実行する必要があるときに、次のエラーが発生したと想像してください ?
{ "errorMessage": "Unable to import module 'lambda_function': No module named 'pandas', "errorType": "Runtime.ImportModuleError" ... }
これはよくある間違いなので心配しないでください。これほど長くするつもりはありません
いくつかの方法がありますが、AWS Lambda 関数にパンダをインポートする最も簡単な方法を紹介します。Lambda レイヤーを追加することです ?
それは?ライブラリ、依存関係などの追加コードを含む Lambda 関数のチーズ層
AWS Lambda レイヤーは、関数の構成要素のようなものです。 想像してみてください プロジェクトを完了するには追加のツール (Pandas ライブラリなど) が必要です。これらすべてのツールをすべての単一プロジェクト内に詰め込む (スペースと時間を無駄にする) 代わりに、AWS ではツールのレイヤー (ライブラリ、依存関係、または共有コード) を作成できます。これらのレイヤーはメイン関数の外側にありますが、関数が必要とするときにいつでも利用できます。
要するに、Lambda レイヤーは次のような場合に役立ちます:
メイン ロジックを追加のライブラリから分離することで、コード内のスペースを節約します。
複数の Lambda 関数にわたってライブラリとコードを再利用します。
コア関数のコードを変更することなく、依存関係を簡単に更新または管理できます。
レイヤーは、関数がスムーズに動作するために必要なものすべてを保持する、Lambda 関数に付属する追加の保管ボックスと考えてください。メインコードを乱雑にすることなく、関数に複数のレイヤーを積み重ねることができます。
Lambda 関数で Pandas を正常に実行するには 3 つのステップしか必要ありません
ご覧のとおり、Lambda 関数の名前の下にオプション Layers があります。私の場合、それは "import-pandas-function" で、レイヤー数は 0
このステップはさらに 2 つのステップに分かれています。これは、Pandas コードを含む Python スクリプトを追加し、コードが正しく実行されているかどうかを確認するために JSON でテスト イベントを記述する必要があるためです。
import json import pandas as pd def lambda_handler(event, context): data = event.get('data', []) df = pd.DataFrame(data) if not df.empty: mean_value = df['column_name'].mean() result = { "mean_value": mean_value, "data_shape": df.shape, "summary": df.describe().to_dict() } else: result = { "message": "Empty DataFrame" } # Return the response return { 'statusCode': 200, 'body': json.dumps(result) }
{ "data": [ {"column_name": 10, "other_column": "A"}, {"column_name": 20, "other_column": "B"}, {"column_name": 30, "other_column": "C"}, {"column_name": 40, "other_column": "D"} ] }
テスト ボタンを押すと、おそらく ?error:-
が表示されます
"errorMessage": "モジュール 'lambda_function' をインポートできません: 'pandas' という名前のモジュールがありません,
"errorType": "Runtime.ImportModuleError"
...
Lambda 関数まで下にスクロールすると、ページの最後に「Layers」という別のセクションが表示されると思います
[レイヤーの追加] をクリックすると、[関数実行時の設定] と [レイヤーの選択] という 2 つのセクションがあるページが表示されます。
[レイヤーの選択] セクションで 3 つのオプションが表示され、[AWS レイヤー] をクリックします。
AWS レイヤーを選択すると、[AWS レイヤー] の下にドロップダウンが表示されます。
「AWS レイヤー」のドロップダウンで -> AWSSDKPandas-Python312
を選択します
「バージョン」のドロップダウンで -> 13(最も多いものを選択)
を選択します
「追加」ボタンをクリックします
ページが関数の概要に移動すると、関数名「import-pandas-function」の下にレイヤーが追加されていることがわかります
レスポンス "statusCode": 200
を正常に取得しました
{ "statusCode": 200, "body": "{\"mean_value\": 25.0, \"data_shape\": [4, 2], \"summary\": {\"column_name\": {\"count\": 4.0, \"mean\": 25.0, \"std\": 12.909944487358056, \"min\": 10.0, \"25%\": 17.5, \"50%\": 25.0, \"75%\": 32.5, \"max\": 40.0}}}" }
コーディングを続けますか?
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3