Python 用の AWS Lambda デプロイパッケージを作成するには、どうすればよいですか?

すべてのファイルの読み取りおよび実行権限を使用して、.zip ファイルのルートにある関数モジュールを含むデプロイパッケージを作成しなければならない可能性があります。

「ModuleNotFoundError」および「モジュールが見つかりません」は、Python での Lambda 関数の一般的なエラーです。通常、これらのエラーは、デプロイパッケージの .zip ファイルのフォルダ構造またはファイルのアクセス許可が正しくないことが原因です。

関数プロジェクトにローカルなすべての依存モジュールをインストールする

注意: ほとんどの Python モジュールはプラットフォームに依存しませんが、一部のモジュールは、特定のオペレーティングシステム環境に対してコンパイルされます。AWS Lambda は、Linux 環境で動作します。デプロイ用に pip を使用してモジュールをインストールする場合、正しいプラットフォーム用の依存関係が含まれるように、ベストプラクティスとして、Linux 環境で .zip ファイルを作成します。

pip install を使用してモジュールをインストールする場合、モジュールはユーザーフォルダまたはシステムフォルダに配置されます。Lambda 用のデプロイパッケージを作成すると、パッケージにはシステムでインストールされたこれらの依存関係が含まれます。次のコマンドを実行して、依存関係をローカルに関数プロジェクトフォルダにインストールします。

pip install boto3 -t ./

これにより、プロジェクトフォルダのルートに boto3 Python モジュールがインストールされます。Lambda 関数に必要なすべてのモジュールに対して、これを繰り返します。

権限の追加 (Linux および macOS のみ)

すべての依存関係モジュールをプロジェクトフォルダにダウンロードしたら、次のコマンドを実行して、ファイルに必要なアクセス権限があることを確認します。

chmod -R 755 .

手動でデプロイパッケージを作成する

このコマンドを実行して、Lambda へのデプロイ用のプロジェクトフォルダを圧縮します。

zip -r ../myDeploymentPackage.zip .

これにより、発行フォルダのすべてのファイルが、親フォルダにある .zip ファイルに圧縮されます。

デプロイパッケージの検証

Linux および macOS の場合:

unzip -l myDeploymentPackage.zip

このコマンドによって、フォルダ構造が表示されます。アプリケーションの主な Python 関数ファイルは、プロジェクトフォルダのルートにある必要があります。追加の Python モジュールなど、その他の依存関係ファイルは、他のフォルダに配置できます。

Windows の場合:

zip ツールを使用してファイルを解凍します。主な Python 関数は、.zip ファイルのルートフォルダにある必要があります。Python 関数ファイルを含む別のベースフォルダが .zip ファイルにある場合は、ルートフォルダのすべての関数ファイルを使用して .zip ファイルを再作成します。

Lambda 関数へのデプロイパッケージのアップロード

  1.     AWS Lambda コンソールを開きます。
  2. ナビゲーションペインで [関数] を選択し、関数を開きます。
  3. [関数コード] セクションで、[コードエントリタイプ] ドロップダウンリストを展開し、[.ZIP ファイルをアップロード] を選択します。
  4. [アップロード] を選択し、.zip ファイルを選択します。
  5. [保存] を選択します。
  6. [Test] を選択します。

また、update-function-code コマンドを使用して、AWS コマンドラインインターフェイス (AWS CLI) から .zip ファイルをアップロードすることもできます。


このページは役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください。

公開日: 2018 年 7 月 30 日