.zip ファイルアーカイブで Python Lambda 関数をデプロイする - AWS Lambda

.zip ファイルアーカイブで Python Lambda 関数をデプロイする

注記

Python 2.7 ランタイムのサポート終了は 2021 年 7 月 15 日です。詳細については、「ランタイムサポートポリシー」を参照してください。

AWS Lambda 関数のコードは、スクリプトまたはコンパイルされたプログラムとそれらの依存関係で構成されます。関数コードを Lambda にデプロイするには、デプロイパッケージを使用します。Lambda は、コンテナイメージと .zip ファイルの、2 種類のデプロイパッケージをサポートしています。

デプロイパッケージを作成するには、コマンドラインツール用の組み込み .zip ファイルアーカイブユーティリティまたは他の .zip ファイルユーティリティ (7zip など) を使用できます。.zip ファイルをデプロイパッケージとして使用するには、次の要件に留意してください。

  • .zip ファイルには、関数のコードと、関数のコード (該当する場合) を Lambda で実行するために使用される依存関係が含まれている必要があります。関数が標準ライブラリまたは AWS SDK ライブラリにのみ依存する場合は、これらのライブラリを .zip ファイルに含める必要はありません。これらのライブラリは、サポートされている Lambda ランタイム環境とともに含まれています。

  • .zip ファイルは 50 MB 未満である必要があります。50 MB より大きい場合は、Amazon Simple Storage Service (Amazon S3) バケットにアップロードすることをお勧めします。

  • .zip ファイルには、C または C++ で記述されたライブラリを含めることはできません。.zip ファイルに Pillow (PIL) や numpy ライブラリなどの C 拡張ライブラリが含まれている場合は、AWS サーバーレスアプリケーションモデル (AWS SAM) コマンドラインインターフェイス (CLI) を使用してデプロイパッケージを構築することをお勧めします。

このセクションでは、デプロイパッケージとして .zip ファイルを作成し、AWS Command Line Interface (AWS CLI) を使用して関数コードを Lambda にデプロイするためにその .zip ファイルを使用する方法について説明します。

前提条件

AWS CLI は、コマンドラインシェルでコマンドを使用して AWS サービスとやり取りするためのオープンソースツールです。このセクションの手順を完了するには、以下が必要です。

ランタイム依存関係とは何ですか?

デプロイパッケージは、ランタイム依存関係の有無にかかわらず、Lambda 関数を作成または更新するために必要です。デプロイパッケージは、関数のコードと依存関係 (該当する場合) を Lambda で実行するソースバンドルとして機能します。

依存関係は、関数コードの Lambda ランタイム環境に含まれていない任意のパッケージ、モジュール、その他のアセンブリ依存関係にすることができます。詳細については、「ランタイム依存関係とは何ですか?」を参照してください。

次の例では、ランタイム依存関係を持たない Lambda 関数について説明します。

  • 関数のコードが Python 3.8 にあり、標準の Python 数学ライブラリとロギングライブラリにのみ依存する場合は、.zip ファイルにライブラリを含める必要はありません。これらのライブラリは、python3.8 ランタイムに含まれています。

  • 関数のコードが AWS SDK for Python (Boto3) にのみ依存する場合は、.zip ファイルに boto3 ライブラリを含める必要はありません。これらのライブラリは、python3.8 ランタイムに含まれています。

AWS SDK の完全なリストについては、「AWS での構築ツール」をご参照ください。