Elastic Beanstalk Python プラットフォームを使用する - AWS Elastic Beanstalk

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

Elastic Beanstalk Python プラットフォームを使用する

このトピックでは、Elastic Beanstalk で Python アプリケーションを設定、ビルド、実行する方法について説明します。

AWS Elastic Beanstalk は、Python プログラミング言語のさまざまなバージョンで多数のプラットフォームブランチをサポートしています。完全なリストについては、「AWS Elastic Beanstalk プラットフォーム」ドキュメントの「Python」を参照してください。

Python ウェブアプリケーションは、 を使用してプロキシサーバーの背後で実行できますWSGI。Elastic Beanstalk は、Gunicorn をデフォルトWSGIサーバーとして提供します。

ソースバンドルProcfileに を追加して、アプリケーションのWSGIサーバーを指定および設定できます。詳細については、「Elastic Beanstalk で Procfile を使用してWSGIサーバーを設定する」を参照してください。

Pipenv によって作成された Pipfile ファイルと Pipfile.lock ファイルを使用して、Python パッケージの依存関係やその他の要件を指定できます。依存関係の指定の詳細については、「Elastic Beanstalk での要件ファイルを使用した依存関係の指定」を参照してください。

Elastic Beanstalk には、Elastic Beanstalk 環境内の EC2 インスタンスで実行されるソフトウェアのカスタマイズに使用できる設定オプションが用意されています。アプリケーションに必要な環境変数を設定し、Amazon S3 に対してログのローテーションを有効にしたら、アプリケーションの出典で静的ファイルが含まれるフォルダを、プロキシサーバーによって提供されるパスにマッピングできます。

設定オプションは実行中の環境の設定を変更するために Elastic Beanstalk コンソールで利用できます。環境を終了したときにその設定が失われないようにするため、保存済み設定を使用して設定を保存し、それを後で他の環境に適用することができます。

ソースコードの設定を保存する場合、設定ファイルを含めることができます。設定ファイルの設定は、環境を作成するたびに、またはアプリケーションをデプロイするたびに適用されます。設定ファイルを使用して、デプロイの間にパッケージをインストールしたり、スクリプトを実行したり、他のインスタンスのカスタマイズオペレーションを実行することもできます。

Elastic Beanstalk コンソールで適用される設定は、設定ファイルに同じ設定があれば、それらの設定を上書きします。これにより、設定ファイルでデフォルト設定を定義し、コンソールでそのデフォルト設定を環境固有の設定で上書きできます。設定の優先順位の詳細と設定の他の変更方法については、「設定オプション」を参照してください。

pip から入手可能な Python パッケージの場合、アプリケーションの出典コードのルートに要件ファイルを含めることができます。Elastic Beanstalk は、デプロイ時に要件ファイルで指定された依存関係パッケージをすべてインストールします。詳細については、「Elastic Beanstalk での要件ファイルを使用した依存関係の指定」を参照してください

Elastic Beanstalk Linux ベースのプラットフォームを拡張するさまざまな方法の詳細については、「Elastic Beanstalk Linux プラットフォームの拡張」を参照してください。

Python 環境の設定

Python プラットフォーム設定を使用すると、Amazon EC2インスタンスの動作を微調整できます。Elastic Beanstalk コンソールを使用して、Elastic Beanstalk 環境の Amazon EC2インスタンス設定を編集できます。

Elastic Beanstalk コンソールを使用して、Python プロセス設定の構成 AWS X-Ray、Amazon S3 へのログローテーションの有効化、アプリケーションが環境から読み取ることができる変数の設定を行います。

Elastic Beanstalk コンソールで Python 環境を設定するには
  1. Elastic Beanstalk コンソールを開き、リージョンリストで を選択します AWS リージョン。

  2. ナビゲーションペインで、[環境] を選択し、リストから環境の名前を選択します。

    注記

    環境が多数ある場合は、検索バーを使用して環境リストをフィルタリングします。

  3. ナビゲーションペインで、[設定] を選択します。

  4. [更新、モニタリング、ログ] の設定カテゴリで、[編集] を選択します。

Python 設定

  • [プロキシサーバー] – 環境インスタンスで使用するプロキシサーバーです。デフォルトでは、nginx が使用されます。

  • WSGI パス – メインアプリケーションファイルの名前またはパス。たとえば、application.pydjango/wsgi.py などです。

  • NumProcesses – 各アプリケーションインスタンスで実行するプロセスの数。

  • NumThreads – 各プロセスで実行するスレッドの数。

AWS X-Ray 設定

  • X-Ray デーモン – AWS X-Ray デーモンを実行して、 からのトレースデータを処理しますAWS X-Ray SDK for Python

ログオプション

[ログ Options] セクションには、2 つの設定があります。

  • [Instance profile] – アプリケーションに関連付けられた Amazon S3 バケットへのアクセス許可が付与されているインスタンスプロファイルを指定します。

  • Amazon S3 へのログファイルのローテーションを有効にする – アプリケーションの Amazon EC2インスタンスのログファイルをアプリケーションに関連付けられた Amazon S3 バケットにコピーするかどうかを指定します。

静的ファイル

パフォーマンスを向上させるには、静的ファイルセクションを使用して、ウェブアプリケーション内の一連のディレクトリから静的ファイル ( HTMLイメージや イメージなど) を提供するようにプロキシサーバーを設定できます。ディレクトリごとに、仮想パスをディレクトリマッピングに設定します。プロキシサーバーは、指定されたパスのファイルに対するリクエストを受け取ると、アプリケーションにリクエストをルーティングする代わりにファイルを直接  処理します。

設定ファイルまたは、Elastic Beanstalk コンソールを使用した静的ファイルの設定の詳細については、「静的ファイルの提供」を参照してください。

デフォルトでは、Python 環境のプロキシサーバーは static パスにある /static という名前のフォルダにあるすべてのファイルを提供します。たとえば、アプリケーション出典の logo.png という名前のフォルダに static というファイルが含まれている場合、プロキシサーバーは subdomain.elasticbeanstalk.com/static/logo.png でそれをユーザーに提供します。このセクションで説明しているように、追加のマッピングを設定できます。

環境プロパティ

環境プロパティを使用して、アプリケーションに情報を渡し、環境変数を設定できます。たとえば、CONNECTION_STRING という名前の環境プロパティを作成し、そのプロパティで、データベースへの connect にアプリケーションが使用する接続文字列を指定できます。

Elastic Beanstalk 内で実行している Python 環境の内部では、Python の os.environ ディクショナリを使用してこれらの値にアクセスできます。詳細については、http://docs.python.org/library/os.html を参照してください。

以下のようなコードを使用して、キーとパラメータにアクセスできます。

import os endpoint = os.environ['API_ENDPOINT']

環境プロパティを使用して、フレームワークに情報を渡すこともできます。たとえば、DJANGO_SETTINGS_MODULE という名前のプロパティを作成して、そのプロパティで、特定の設定モジュールを使用するように Django を設定できます。環境によって、値は、development.settingsproduction.settings などになります。

詳細については、「環境プロパティとその他のソフトウェアの設定」を参照してください。

Python 設定の名前空間

設定ファイルを使用して、設定オプションを設定し、デプロイの間、他のインスタンス設定タスクをパフォーマンスできます。設定オプションは、プラットフォーム固有のものでも、Elastic Beanstalk サービス全体のすべてのプラットフォームに適用できるものでもかまいません。設定オプションは、名前空間として整理されています。

Python プラットフォームでは、名前空間 (aws:elasticbeanstalk:environment:proxyaws:elasticbeanstalk:environment:proxy:staticfilesaws:elasticbeanstalk:container:python) のオプションを定義します。

以下の設定ファイルの例では、DJANGO_SETTINGS_MODULE という名前の環境プロパティを作成する設定オプションを指定し、Apache プロキシサーバーを選択して、statichtml という名前のディレクトリを /html パスにマッピングし staticimages という名前のディレクトリを /images パスにマッピングする 2 つの静的ファイルオプションを指定して、aws:elasticbeanstalk:container:python 名前空間に追加の設定を指定しています。この名前空間には、ソースコード内のWSGIスクリプトの場所と、 で実行するスレッドとプロセスの数を指定できるオプションが含まれていますWSGI。

option_settings: aws:elasticbeanstalk:application:environment: DJANGO_SETTINGS_MODULE: production.settings aws:elasticbeanstalk:environment:proxy: ProxyServer: apache aws:elasticbeanstalk:environment:proxy:staticfiles: /html: statichtml /images: staticimages aws:elasticbeanstalk:container:python: WSGIPath: ebdjango.wsgi:application NumProcesses: 3 NumThreads: 20
メモ
  • Amazon Linux Python プラットフォームバージョン (Amazon Linux AMI 2 より前) を使用している場合は、 の値を WSGIPath に置き換えますebdjango/wsgi.py。この例の値は、Amazon Linux AMIプラットフォームバージョンではサポートされていない Gunicorn WSGIサーバーで動作します。

  • さらに、これらの古いプラットフォームバージョンでは、静的ファイル―aws:elasticbeanstalk:container:python:staticfilesの設定に異なる名前空間が使用されます 。これは、スタンダードの静的ファイル名前空間と同じオプション名とセマンティクスを持っています。

設定ファイルでは、お客様の環境のインスタンスでソフトウェアをさらに変更するためのキーもいくつか support されています。この例では、packages キーを使用して、Memcached をインストールし、yum および コンテナ コマンドを使用して、デプロイ時に run command にサーバーを設定します。

packages: yum: libmemcached-devel: '0.31' container_commands: collectstatic: command: "django-admin.py collectstatic --noinput" 01syncdb: command: "django-admin.py syncdb --noinput" leader_only: true 02migrate: command: "django-admin.py migrate" leader_only: true 03wsgipass: command: 'echo "WSGIPassAuthorization On" >> ../wsgi.conf' 99customize: command: "scripts/customize.sh"

Elastic Beanstalk には、環境をカスタマイズするための多数の設定オプションが用意されています。設定ファイルに加えて、コンソール、保存された設定、EB 、CLIまたは を使用して設定オプションを設定することもできます AWS CLI。詳細については、「設定オプション」を参照してください。

python3 実行可能ファイル

Elastic Beanstalk Python 環境のEC2インスタンスで使用できるpython3実行可能ファイルのバージョンは、プラットフォームで使用されているのと同じ Python バージョンに必ずしも対応しているとは限りません。たとえば、Python 3.12 AL2023 プラットフォームでは、 は Python 3.9 /usr/bin/python3を指します。これは、Python 3.9 が AL2023 のシステム Python であるためです。詳細については、「Amazon Linux 2AL2023 ユーザーガイド」の「023 での Python」を参照してください。 プラットフォームで使用される Python バージョンに対応する実行可能ファイルには、バージョン管理された場所 (例: /usr/bin/python3.12) またはアプリケーションの仮想環境binディレクトリ (例: ) からアクセスできます/var/app/venv/staging-LQM1lest/bin/python3。プラットフォームは、プラットフォームブランチに対応する正しい Python 実行可能ファイルを使用します。