メニュー
AWS Lambda
開発者ガイド

デプロイパッケージの作成 (Python)

Lambda 関数を作成するには、最初に Lambda 関数デプロイパッケージ (コードと依存関係で構成される .zip ファイル) を作成します。

デプロイパッケージは自分で作成するか、または Lambda コンソールで作成できます。コンソールでコードを直接記述すると、コンソールによってデプロイパッケージが作成およびアップロードされ、Lambda 関数が作成されます。コンソールを使用して Lambda 関数を作成できるかどうかを判断するには、以下の点に注意してください。

  • シンプルなシナリオ – カスタムコードで AWS SDK ライブラリのみが必要な場合は、AWS Lambda コンソールのインラインエディターを使用できます。コンソールを使用して、コードの編集および AWS Lambda へのアップロードを行うことができます。コンソールは、コードとそれに関連する設定情報を、Lambda サービスが実行可能なデプロイパッケージに圧縮します。

    サンプルイベントデータを使って手動で呼び出すことにより、コンソールでコードをテストすることもできます。

    注記

    Lambda サービスによって、AWS SDK for Python が事前インストールされています。

  • 高度なシナリオ – 画像処理のグラフィックスライブラリなど他のリソースを使用するコードを作成する場合や、コンソールではなく AWS CLI を使用する場合は、最初に Lambda 関数デプロイパッケージを作成した後、コンソールまたは CLI を使用してパッケージをアップロードする必要があります。

注記

デプロイパッケージを作成した後、それを直接アップロードできます。またはオプションで先に .zip ファイルを Lambda 関数を作成する同じ AWS リージョンの Amazon S3 バケットにアップロードしておき、その後コンソールまたは AWS CLI を使用して Lambda 関数を作成するときにバケット名とオブジェクトキー名を指定できます。

デプロイパッケージの作成手順 (コンソール外) の例を以下に示します。

注記

Lambda 関数で純粋な Python モジュールを使用する場合、この手順は Python および pip の標準的なインストールのほとんどで動作します。ネイティブ依存関係があるモジュールが含まれる場合、または Homebrew を使用して OS X に Python をインストールした場合は、次のセクションで説明する Virtualenv を使用してデプロイパッケージを作成する場合の手順を参照してください。詳細については、「Virtualenv で作成した Python 環境を使用してデプロイパッケージを作成する」および Virtualenv のウェブサイトを参照してください。

pip を使用して、依存関係/ライブラリをインストールします。pip のインストールについては、「Installation」を参照してください。

  1. ディレクトリを作成します (たとえば、project-dir)。

  2. Python ソースファイル (.py ファイル) をすべてこのディレクトリのルートレベルに保存します。

  3. pip を使用してライブラリをインストールします。これらのライブラリも、ディレクトリのルートレベルにインストールします。

    Copy
    pip install module-name -t /path/to/project-dir

    たとえば、次のコマンドは requests HTTP ライブラリを project-dir ディレクトリにインストールします。

    Copy
    pip install requests -t /path/to/project-dir

    Mac OS X を使用しており、Homebrew (Homebrewを参照) を使用して Python をインストールした場合は、前述のコマンドは動作しません。簡単な回避策は、setup.cfg に以下の内容の /path/to/project-dir ファイルを追加することです。

    Copy
    [install] prefix=
  4. project-dir ディレクトリの内容を ZIP 圧縮します。これがデプロイパッケージです。

    重要

    ディレクトリではなく、ディレクトリの中身を圧縮します。ZIP ファイルの内容は、Lambda 関数の現在の作業ディレクトリとして利用できます (例: /project-dir/codefile.py/lib/yourlibraries)。

注記

AWS Lambda には、Python 向けの AWS SDK (Boto 3) が含まれます。デプロイパッケージに含める必要はありません。ただし、デフォルトで含まれるバージョン以外の Boto3 のバージョンを使用する場合は、それをデプロイパッケージに含めることができます。

Virtualenv で作成した Python 環境を使用してデプロイパッケージを作成する

このセクションでは、Virtualenv ツールで作成した Python 環境を使用している場合のデプロイパッケージの作成方法を説明します。次の例を考えます。

  • Virtualenv ツールを使用して以下の隔離された Python 環境を作成し、環境をアクティブ化します。

    Copy
    virtualenv path/to/my/virtual-env

    Windows、OS X、Linux で、次のようにして環境をアクティブ化できます。

    • Windows では、activate.bat を使用してアクティブ化します。

      Copy
      path\to\my\virtual-env\Scripts\activate.bat
    • OS X および Linux では、activate スクリプトをソースにします。

      Copy
      source path/to/my/virtual-env/bin/activate

  • また、リクエストパッケージをアクティブ化された環境にインストールしているとします (つまり、コード内で使用するとします)。これらのパッケージは、以下のようにインストールできます。 :

    Copy
    pip install requests

次に、デプロイパッケージを作成するには、以下の作業を行います。

  1. 最初に、AWS Lambda にアップロードにする Python コードを含む .zip ファイルを作成します。

  2. 前述のアクティブ化された仮想環境から .zip ファイルにライブラリを追加します。つまり、次のディレクトリの内容を .zip ファイルに追加します (ディレクトリそのものではなく、ディレクトリの内容を追加することに重ねて注意してください)。

    Windows では、次のディレクトリです。

    Copy
    %VIRTUAL_ENV%\Lib\site-packages

    OS X、Linux では、次のディレクトリです。

    Copy
    $VIRTUAL_ENV/lib/python3.6/site-packages

    注記

    仮想環境の site-packages にパッケージが見つからない場合は、dist-packages ディレクトリにある場合があります。

Python デプロイパッケージの作成例については、「Python」を参照してください。