要件ファイルを使用した依存関係の指定 - AWS Elastic Beanstalk

要件ファイルを使用した依存関係の指定

通常の Python アプリケーションには、他のサードパーティー製 Python パッケージに対する依存関係があります。Elastic Beanstalk Python プラットフォームでは、アプリケーションが依存する Python パッケージを指定する方法がいくつかあります。

pip および requirements.txt を使用します。

Python パッケージをインストールするためのスタンダードツールは pip です。これには、すべての必要なパッケージ (およびバージョン) を 1 つの要件ファイルで指定する特徴があります。要件ファイルの詳細については、要件ファイルの形式を参照してください。

requirements.txt という名前のファイルを作成し、出典バンドルの最上位ディレクトリに置きます。次は、Django の requirements.txt ファイルの例です。

Django==2.2 mysqlclient==2.0.3

開発環境で、pip freeze コマンドを使用して要件ファイルを生成できます。

~/my-app$ pip freeze > requirements.txt

要件ファイルに、実際にアプリケーションによって使用されるパッケージのみが含まれるようにするには、それらのパッケージのみがインストールされている仮想環境を使用します。仮想環境の外では、pip freeze の出力に、オペレーティングシステムに付属のパッケージを含め、開発マシンにインストール済みのすべての pip パッケージが含まれます。

注記

Amazon Linux AMI Python プラットフォームバージョンでは、Elastic Beanstalk は Pipenv または Pipfiles をネイティブにサポートしていません。Pipenv を使用してアプリケーションの依存関係を管理する場合は、次のコマンドを実行して requirements.txt ファイルを生成します。

~/my-app$ pipenv lock -r > requirements.txt

詳細については、Pipenv ドキュメントの Generating a requirements.txt を参照してください。

Pipenv と Pipfile を使用します

Pipenv は、最新の Python パッケージングツールです。これは、パッケージのインストールと依存関係ファイルの作成と管理およびアプリケーションの virtualenv を組み合わせたものです。Pipenv は 2 つのファイルを保持しています。Pipfile には、さまざまな種類の依存関係と要件が含まれており、Pipfile.lock は、決定論的なビルドを可能にするバージョンのスナップショットです。詳細については、「Pipenv: 人間のための Python 開発ワークフロー」を参照してください。

Amazon Linux 2 Python プラットフォームのバージョンでは、Pipenv ベースの要件ファイルが support されています。開発環境で作成し、Elastic Beanstalk にデプロイする出典バンドルに含めます。

注記

Amazon Linux AMI Python プラットフォームバージョン (Amazon Linux 2 より前の) は Pipenv と Pipfile を support していません。

次の例では、Django と Django REST フレームワークをインストールするために Pipenv を使用しています。

~/my-app$ pipenv install django ~/my-app$ pipenv install djangorestframework

これらのコマンドは、ファイル PipfilePipfile.lock を作成します。出典バンドルの最上位ディレクトリに Pipfile を配置して、環境インスタンスにインストールされている依存関係パッケージの最新バージョンを取得します。または、Pipfile.lock を含めて、ファイルの作成時に開発環境を反映した一連のパッケージバージョンを取得します。

ここで説明する要件ファイルを複数含めると、Elastic Beanstalk はそのうちの 1 つだけを使用します。次の表に、優先順位を降順で示します。

  1. requirements.txt

  2. Pipfile.lock

  3. Pipfile