翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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フレームワークをインストールします。これらのコマンドは、ファイル Pipfile
と Pipfile.lock
を作成します。
~/my-app$ pipenv install django
~/my-app$ pipenv install djangorestframework
優先順位
このトピックで説明する要件ファイルを複数含めると、Elastic Beanstalk はそのうちの 1 つだけを使用します。次の表に、優先順位を降順で示します。
-
requirements.txt
-
Pipfile.lock
-
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 つの要件ファイルが見つからない場合は、アプリケーションの依存関係はインストールされません。