web-dev-qa-db-ja.com

AlexaのAWSラムダ関数にpythonライブラリを追加するにはどうすればよいですか?

Pythonを使用してAlexaアプリを作成するチュートリアルに従いました。

Python Alexaチュートリアル

すべての手順を正常に実行し、アプリを動作させることができました。pythonコードを変更し、import requestsなどの外部ライブラリまたはpipを使用してインストールする他のライブラリを使用したい。ラムダ関数をセットアップして、マシンにローカルにインストールするpipパッケージを含めるにはどうすればよいですか?

34
Vineet Shah

Amazon公式ドキュメントリンクで説明されているように、 here pythonがあるフォルダーに必要なパッケージをインストールした後、すべてのフォルダーの内容のZipを作成するのと同じくらい簡単です。 _ラムダコード。

Vineethが彼のコメントで指摘したように、インラインコードエディターからZipファイルアップロードアプローチに移行する最初のステップは、構成設定の下でラムダ関数ハンドラー名を変更してpythonスクリプトファイル名を含めることですラムダハンドラを保持します。

lambda_handler => {your-python-script-file-name} .lambda_handler

CONFIGURE LAMBDA FUNCTION

python-lambdalambda-uploader のような他のソリューションは、アップロードプロセスと最も重要なローカルテストの簡素化に役立ちます。これらは、開発の時間を大幅に節約します。

15
Santhosh Gandhe

公式ドキュメント はかなり良いです。簡単に言うと、ラムダ関数のコードとトップレベルで使用するすべての外部ライブラリの両方を含むディレクトリのZipファイルを作成する必要があります。

それをシミュレートするには、virtualenvを非アクティブにし、必要なすべてのライブラリを作業ディレクトリ(コマンドラインでスクリプトを呼び出す場合は常にsys.pathにあります)にコピーし、スクリプトがまだ機能するかどうかを確認します。

15
dorian

zappa などのフレームワークの使用を検討すると、ラムダ関数のパッケージ化とデプロイが処理されます。

これを flask-ask と組み合わせて使用​​すると、Alexaのスキルをより簡単に作成できます。これのビデオチュートリアルもあります(zappa readmeから) here

7
d3ming

@ d3mingの答えを反映して、この時点でフレームワークは良い方法です。展開パッケージを手動で作成することは不可能ではありませんが、パッケージのコンパイル済みコードをアップロードする必要があります。また、Linux以外のシステムでそのコードをコンパイルする場合、システム間で問題が発生する可能性がありますまた、Lambda関数のデプロイされた環境は高いです。

その後、LinuxマシンまたはDockerコンテナでコードをコンパイルすることにより、この問題を回避できます。しかし、その複雑さのすべての間に、フレームワークを採用することでさらに多くを得ることができます。

サーバーレス はよく採用されており、カスタムpythonパッケージをサポートしています。 Dockerと統合してpython依存関係をコンパイルし、展開パッケージをビルドします。

これに関する完全なチュートリアルを探している場合は、 Python Lambda関数のチュートリアルをここに書きました。

3
jay

この特定の問題を解決するために、 juniper というライブラリを使用しています。一言で言えば、あなたがする必要があるのは、次のような非常に単純なマニフェストファイルを作成することです。

functions:
  # Name the Zip file you want juni to create
  router:
    # Where are your dependencies located?
    requirements: ./src/requirements.txt.
    # Your source code.
    include:
    - ./src/lambda_function.py

このマニフェストファイルからjuni buildを呼び出すと、Zipファイルアーティファクトが作成されます。このファイルには、requirements.txtで指定したすべての依存関係が含まれます。

コマンドはこのファイルを作成します./dist/router.Zip。このファイルは、samテンプレートと組み合わせて使用​​しています。ただし、そのZipを使用してコンソールにアップロードするか、awscliを使用してアップロードできます。

0
Pedro