QuickStart: Elastic Beanstalk に Python アプリケーションをデプロイする - AWS Elastic Beanstalk

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

QuickStart: Elastic Beanstalk に Python アプリケーションをデプロイする

この QuickStart チュートリアルでは、Python アプリケーションを作成して AWS Elastic Beanstalk 環境にデプロイする手順を示します。

注記

この QuickStart チュートリアルは、デモンストレーションを目的としています。このチュートリアルで作成したアプリケーションを本稼働トラフィックに使用しないでください。

AWS アカウント

まだ AWS をご利用でない場合は、AWS アカウントを作成する必要があります。サインアップすることによって Elastic Beanstalk とその他の AWS のサービスにアクセスできるようになります。

AWS アカウントが既にある場合は、前提条件 に進むことができます。

AWS アカウントへのサインアップ

AWS アカウント がない場合は、以下のステップを実行して作成します。

AWS アカウントにサインアップするには
  1. https://portal.aws.amazon.com/billing/signup を開きます。

  2. オンラインの手順に従います。

    サインアップ手順の一環として、通話呼び出しを受け取り、電話キーパッドで検証コードを入力するように求められます。

    AWS アカウント にサインアップすると、AWS アカウントのルートユーザー が作成されます。ルートユーザーには、アカウントのすべてのAWS のサービスとリソースへのアクセス権があります。セキュリティのベストプラクティスとして、ユーザーに管理アクセスを割り当て、ルートユーザーのみを使用してルートユーザーアクセスが必要なタスクを実行してください。

サインアップ処理が完了すると、AWS からユーザーに確認メールが送信されます。https://aws.amazon.com/アカウント] をクリックして、いつでもアカウントの現在のアクティビティを表示し、アカウントを管理することができます。

管理アクセスを持つユーザーを作成する

AWS アカウント にサインアップしたら、AWS アカウントのルートユーザー をセキュリティで保護し、AWS IAM Identity Center を有効にして、管理ユーザーを作成します。これにより、日常的なタスクにルートユーザーを使用しないようにします。

AWS アカウントのルートユーザーをセキュリティで保護する
  1. ルートユーザー] を選択し、AWS アカウント のメールアドレスを入力して、アカウント所有者として AWS Management Console にサインインします。次のページでパスワードを入力します。

    ルートユーザーを使用してサインインする方法については、AWS サインイン ユーザーガイドルートユーザーとしてサインインするを参照してください。

  2. ルートユーザーの多要素認証 (MFA) を有効にします。

    手順については、「IAM ユーザーガイド」のAWS アカウント のルートユーザーの仮想 MFA デバイスを有効にする (コンソール)を参照してください。

管理アクセスを持つユーザーを作成する
  1. IAM アイデンティティセンターを有効にします。

    手順については、「AWS IAM Identity Center ユーザーガイド」の「AWS IAM Identity Center の有効化」を参照してください。

  2. IAM アイデンティティセンターで、ユーザーに管理アクセスを付与します。

    IAM アイデンティティセンターディレクトリ をアイデンティティソースとして使用するチュートリアルについては、「AWS IAM Identity Center ユーザーガイド」の「デフォルト IAM アイデンティティセンターディレクトリを使用したユーザーアクセスの設定」を参照してください。

管理アクセス権を持つユーザーとしてサインインする
  • IAM アイデンティティセンターのユーザーとしてサインインするには、IAM アイデンティティセンターのユーザーの作成時に E メールアドレスに送信されたサインイン URL を使用します。

    IAM Identity Center ユーザーを使用してサインインする方法については、AWS サインイン ユーザーガイドAWS アクセスポータルにサインインするを参照してください。

追加のユーザーにアクセス権を割り当てる
  1. IAM アイデンティティセンターで、最小特権のアクセス許可を適用するというベストプラクティスに従ったアクセス許可セットを作成します。

    手順については、「AWS IAM Identity Center ユーザーガイド」の「権限設定を作成する」を参照してください。

  2. グループにユーザーを割り当て、そのグループにシングルサインオンアクセス権を割り当てます。

    手順については、「AWS IAM Identity Center ユーザーガイド」の「グループの参加」を参照してください。

前提条件

注記

2024 年 10 月 1 日より後に作成された AWS アカウントでは、新しい環境を正常に作成するためのオプションを設定することが一時的に必要です。新しいアカウントと同様に、アカウントがまだ環境を持っていないリージョンでのみ、既存のアカウントは同じアクションを実行する必要があります。詳細については、「テンプレートの起動」を参照してください。

このガイドの手順に従うには、run command のためのコマンドラインターミナルまたはシェルが必要になります。コマンドは、該当する場合、プロンプト記号 ($) と現在のディレクトリの名前が前に付けられて、リストに示されます。

~/eb-project$ this is a command this is output

Linux および macOS では、任意のシェルとパッケージ管理者を使用できます。Windows では、Linux 用の Windows サブシステムをインストールして、Ubuntu および Bash の Windows に統合されたバージョンを入手できます。

EB CLI

このチュートリアルでは、Elastic Beanstalk コマンドラインインターフェイス (EB CLI) を使用します。EB CLI をインストールおよび設定する手順の詳細については、「Elastic Beanstalk コマンドラインインターフェイスをインストールする」および「EB CLI の設定」を参照してください。

Python および Flask フレームワーク

次のコマンドを実行して、pip がインストールされ動作している Python バージョンがあることを確認します。

~$ python3 --version Python 3.N.N >~$ python3 -m pip --version pip X.Y.Z from ... (python 3.N.N)

前のコマンドのいずれかが「Python が見つからない」と返す場合は、python3 ではなく python を使用する次のコマンドを実行します。エイリアスとシンボリックリンクの設定は、オペレーティングシステムと個々のカスタマイズによって異なる可能性があるため、python3 コマンドはマシンで機能しない場合があります。

~$ python --version Python 3.N.N >~$ python -m pip --version pip X.Y.Z from ... (python 3.N.N)

ローカルマシンに Python がインストールされていない場合は、Python ウェブサイトの「Python ダウンロード」ページからダウンロードできます。Elastic Beanstalk がサポートする Python 言語バージョンのリストについては、「AWS Elastic Beanstalk プラットフォーム」ガイドの「サポートされている Python プラットフォーム」を参照してください。Python ダウンロードウェブサイトには、「Python デベロッパーガイド」へのリンクがあり、インストールと設定の手順が記載されています。

注記

Python pip パッケージは、デフォルトで Python 3.4 以降に含まれています。

サポートされているバージョンの Python があるが、pip ではないことが出力で示された場合は、pip.pypa.io ウェブサイトの「インストール」ページを参照してください。pip がない Python 環境に pip をインストールするためのガイダンスがここに記載されています。

次のコマンドを実行して、Flask がインストールされているかどうかを確認します。

~$ pip list | grep Flask

Flask がインストールされていない場合は、次のコマンドを実行してインストールできます。

~$ pip install Flask

ステップ 1: Python アプリケーションを作成する

プロジェクトディレクトリを作成します。

~$ mkdir eb-python ~$ cd eb-python

「Hello Elastic Beanstalk!」というサンプルを作成します。Elastic Beanstalk を使用してデプロイする Python アプリケーション。

作成したばかりのディレクトリに application.py という名前のテキストファイルを次の内容で作成します。

~/eb-python/application.py
from flask import Flask application = Flask(__name__) @application.route('/') def hello_elastic_beanstalk(): return 'Hello Elastic Beanstalk!'

次の行がある requirements.txt という名前のテキストファイルを作成します。このファイルには、アプリケーションを実行するために必要な pip パッケージが含まれています。

~/eb-python/requirements.txt
Flask

ステップ 2: アプリケーションをローカルに実行する

アプリケーションをローカルで実行するには、次のコマンドを実行します。

~/eb-python$ export FLASK_APP=application.py && flask run --port 5000

次のような出力が表示されます。

Serving Flask app 'application.py'
Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
Running on http://127.0.0.1:5000
Press CTRL+C to quit
127.0.0.1 - - [01/Jan/1970 00:00:00] "GET / HTTP/1.1" 200 -

ウェブブラウザで http://localhost:5000 にアクセスします。ウェブブラウザに「Hello Elastic Beanstalk!」と表示されます。

ステップ 3: EB CLI を使用して Python アプリケーションをデプロイする

次のコマンドを実行して、このアプリケーションの Elastic Beanstalk 環境を作成します。

環境を作成し、Python アプリケーションをデプロイするには
  1. eb init コマンドを使用して EB CLI リポジトリを初期化します。

    ~/eb-python$ eb init -p python-3.9 python-tutorial --region us-east-2

    このコマンドは、python-tutorial という名前のアプリケーションを作成し、ローカルリポジトリを設定して指定された Python プラットフォームバージョンで環境を作成します。

  2. (オプション) eb init を再度実行してデフォルトのキーペアを設定し、アプリケーションを実行している EC2 インスタンスに SSH を使用して connect できるようにします。

    ~/eb-python$ eb init Do you want to set up SSH for your instances? (y/n): y Select a keypair. 1) my-keypair 2) [ Create new KeyPair ]

    1 つのキーペアがすでにある場合はそれを選択するか、またはプロンプトに従ってキーペアを作成します。プロンプトが表示されないか設定を後で変更する必要がない場合は、eb init -i を実行します。

  3. 環境を作成し、eb create を使用してそこにアプリケーションをデプロイします。Elastic Beanstalk は、アプリケーションの zip ファイルを自動的にビルドし、ポート 5000 で起動します。

    ~/eb-python$ eb create python-env

    Elastic Beanstalk が環境を作成するのに約 5 分かかります。

ステップ 4: Elastic Beanstalk でアプリケーションを実行する

環境を作成するプロセスが完了したら、eb open でウェブサイトを開きます。

~/eb-python$ eb open

お疲れ様でした。Elastic Beanstalk で Python アプリケーションをデプロイしました。これにより、アプリケーション用に作成されたドメイン名を使用してブラウザ Window が開きます。

ステップ 5:クリーンアップ

アプリケーションでの作業が終了したら、環境を終了できます。Elastic Beanstalk は、環境に関連付けられているすべての AWS リソースを終了します。

EB CLI を使用して Elastic Beanstalk 環境を終了するには、次のコマンドを実行します。

~/eb-python$ eb terminate

アプリケーションの AWS リソース

1 つのインスタンスアプリケーションを作成しました。1 つの EC2 インスタンスを持つ簡単なサンプルアプリケーションとして動作するため、ロードバランシングや自動スケーリングは必要ありません。1 つのインスタンスアプリケーションの場合、Elastic Beanstalk は次の AWS リソースを作成します。

  • EC2 インスタンス – 選択したプラットフォームでウェブアプリケーションを実行するよう設定された Amazon EC2 仮想マシン。

    各プラットフォームは、それぞれ特定の言語バージョン、フレームワーク、ウェブコンテナ、またはそれらの組み合わせをサポートするための、さまざまなソフトウェア、設定ファイル、スクリプトを実行します。ほとんどのプラットフォームでは、ウェブアプリケーションの前にウェブトラフィックを処理するリバースプロキシとして Apache または nginx のいずれかを使用します。そのプロキシがリクエストをアプリケーションに転送し、静的アセットを提供して、アクセスログとエラーログを生成します。

  • インスタンスセキュリティグループ – ポート 80 上の受信トラフィックを許可するよう設定された Amazon EC2 セキュリティグループ。このリソースでは、ロードバランサーからの HTTP トラフィックが、ウェブ・アプリケーションを実行している EC2 インスタンスに達することができます。デフォルトでは、トラフィックは他のポート上で許可されません。

  • Amazon S3 バケット – Elastic Beanstalk の使用時に作成されるソースコード、ログ、その他のアーティファクトの保存場所。

  • Amazon CloudWatch アラーム – 環境内のインスタンスの負荷を監視する 2 つの CloudWatch アラーム。負荷が高すぎる、または低すぎる場合にトリガーされます。アラームがトリガーされると、Auto Scaling グループはレスポンスとしてスケールアップまたはダウンを行います。

  • AWS CloudFormation スタック – 環境内でリソースを起動して、設定の変更を伝達するために、Elastic Beanstalk は AWS CloudFormation を使用します。リソースは、AWS CloudFormation コンソールに表示できるテンプレートで定義されます。

  • ドメイン名 – ウェブ・アプリケーションまでのルートとなるドメイン名であり、subdomain.region.elasticbeanstalk.com の形式です。

Elastic Beanstalk は、これらのリソースをすべて管理します。環境を終了すると、Elastic Beanstalk は含まれているすべてのリソースを終了します。

次のステップ

アプリケーションを実行する環境を手に入れた後、アプリケーションの新しいバージョンや、異なるアプリケーションをいつでもデプロイできるようになります。新しいアプリケーションバージョンのデプロイは、プロビジョニングや EC2 インスタンスの再開が必要ないため、非常に素早く行えます。Elastic Beanstalk コンソールを使用して新しい環境を調べることもできます。詳細な手順については、このガイドの「開始方法」の章の「環境を探索する」を参照してください。

その他のチュートリアルを試す

異なるサンプルアプリケーションで他のチュートリアルを試したい場合は、以下のチュートリアルを参照してください。

1 つか 2 つのサンプルアプリケーションをデプロイし、ローカルで Python アプリケーションを開発して実行する準備が整ったら、「Elastic Beanstalk 用の Python 開発環境の設定」を参照します。

Elastic Beanstalk コンソールでデプロイする

Elastic Beanstalk コンソールを使用してサンプルアプリケーションを起動することもできます。詳細な手順については、このガイドの「開始方法」の章の「サンプルアプリケーションを作成する」を参照してください。