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

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

このトピックでは、必要な他の Python パッケージをインストールするようにアプリケーションを設定する方法について説明します。通常の Python アプリケーションには、他のサードパーティー製 Python パッケージに対する依存関係があります。Elastic Beanstalk Python プラットフォームでは、アプリケーションが依存する Python パッケージを指定する方法が複数あります。

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

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

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 Python AMI プラットフォームバージョンでは、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: 人間のための Python 開発ワークフロー」を参照してください。

Pipenv は 2 つのファイルを維持します。

  • Pipfile – このファイルには、さまざまな種類の依存関係と要件が含まれています。

  • Pipfile.lock – このファイルには、確定的なビルドを可能にするバージョンスナップショットが含まれています。

これらのファイルを開発環境で作成し、Elastic Beanstalk にデプロイするソースバンドルの最上位ディレクトリに含めることができます。これらの 2 つのファイルの詳細については、「Pipfile と Pipfile.lock の例」を参照してください。

次の例では、Pipenv を使用して Django と Django RESTフレームワークをインストールします。これらのコマンドは、ファイル PipfilePipfile.lock を作成します。

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

優先順位

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

  1. requirements.txt

  2. Pipfile.lock

  3. Pipfile

注記

2023 年 3 月 7 日の Amazon Linux 2 プラットフォームリリース以降、これらのファイルを複数指定すると、Elastic Beanstalk はデプロイ中にどの依存関係ファイルが使用されたかを示すコンソールメッセージを発行します。

次のステップは、インスタンスのデプロイ時に Elastic Beanstalk が依存関係をインストールするために従うロジックです。

  • requirements.txt ファイルがある場合は、コマンド pip install -r requirements.txt を使用します。

  • 2023 年 3 月 7 日の Amazon Linux 2 プラットフォームリリース以降、requirements.txt ファイルはなくても Pipfile.lock がある場合は、コマンド pipenv sync を使用します。そのリリース前は、pipenv install --ignore-pipfile を使用していました。

  • requirements.txt ファイルと Pipfile.lock のいずれも存在しないが、Pipfile が存在する場合は、コマンド pipenv install --skip-lock を使用します。

  • 3 つの要件ファイルが見つからない場合は、アプリケーションの依存関係はインストールされません。