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

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

注記

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

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

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

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

  • .zip ファイルのサイズが 50 MB を超える場合は、Amazon Simple Storage Service (Amazon S3) バケットから関数にアップロードすることをお勧めします。

  • デプロイパッケージにネイティブライブラリが含まれている場合は、AWS Serverless Application Model(AWS SAM) でデプロイパッケージを構築できます。AWS SAMCLI sam build コマンドを --use-container と共に使用して、デプロイパッケージを作成できます。このオプションは、Lambda 実行環境と互換性のある Docker イメージ内にデプロイパッケージを構築します。

    詳細については、AWS Serverless Application Model 開発者ガイドの「sam ビルド」を参照してください。

  • Lambda は POSIX ファイルアクセス許可を使用するため、.zip ファイルを作成する前に、デプロイパッケージフォルダのアクセス許可を設定する必要がある場合があります。

このセクションでは、デプロイパッケージとして .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 での構築ツール」をご参照ください。