コンテナイメージで Python Lambda 関数をデプロイする - AWS Lambda

コンテナイメージで Python Lambda 関数をデプロイする

注記

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

Lambda 関数コードを コンテナーイメージ としてデプロイできます 。AWSでは、Python 関数のコンテナーイメージの構築に役立つ次のリソースを提供します。

  • Lambda の AWS ベースイメージ

    これらのベースイメージには、Lambda でイメージを実行するために必要な言語ランタイムおよびその他のコンポーネントがあらかじめロードされています。AWS は、コンテナイメージの構築に役立つ各ベースイメージの Dockerfile を提供します。

  • オープンソースのランタイムインターフェイスクライアント

    コミュニティまたはプライベートエンタープライズベースイメージを使用する場合は、ベースイメージにランタイムインターフェイスクライアントを追加して、Lambda と互換性を持たせるようにします。

AWS Python のベースイメージ

AWS は、Python 用の次のベースイメージを提供します。

タグ ランタイム オペレーティングシステム Dockerfile

3, 3.8

Python 3.8 Amazon Linux 2 GitHub の Python 3.8用の Dockerfile

37

Python 3.7 Amazon Linux2018.03 GitHub の Python 3.7用の Dockerfile

3.6

Python 3.6 Amazon Linux2018.03 GitHub の Python 3.6用の Dockerfile

2, 2.7

Python 2.7 Amazon Linux 2018.03 GitHub の Python 2.7用の Dockerfile

Docker Hub リポジトリ: amazon/aws-lambda-python

Amazon ECR リポジトリ: gallery.ecr.aws/lambda/python

Python ランタイムインターフェイスクライアント

pip パッケージマネージャーを使用して Python 用のランタイムインターフェイスクライアントをインストールします。

pip install awslambdaric

パッケージの詳細については、Python パッケージインデックス (PyPI) ウェブサイトの Lambda RIC を参照してください。

Python ランタイムインターフェイスクライアント をGitHub からダウンロードすることもできます。

AWS ベースイメージを使用した Python のデプロイ

AWS ベースイメージを使用して Python 用のコンテナーイメージを構築する場合、Python アプリをコンテナーにコピーし、依存関係をインストールするだけで済みます。

python:3.8 ベースイメージで Python 関数を構築してデプロイします。

  1. ローカルマシンで、新しい関数のプロジェクトディレクトリを作成します。

  2. プロジェクトディレクトリに、関数コードを含む app.py という名前のファイルを追加します。以下は、シンプルな Python ハンドラーの例です。

    import sys def handler(event, context): return 'Hello from AWS Lambda using Python' + sys.version + '!'
  3. テキストエディタを使用して、プロジェクトディレクトリに Dockerfile を作成します。次は、前のステップで作成したハンドラーの Dockerfile の例です。

    FROM public.ecr.aws/lambda/python:3.8 COPY app.py ./ CMD ["app.handler"]
  4. コンテナーイメージを作成するには、「 Lambda のベースイメージ AWS からイメージを作成する 」の手順 4 ~ 7 を実行します。

代替のベースイメージから Python イメージを作成します

Alpine ベースイメージから Python イメージを作成する方法の例については、AWSブログの 「Lambda の コンテナイメージのサポート 」を参照してください。