Elastic BeanstalkにDjango環境を構築してみた。

AWS

最初にEB Cliコマンドを使用するので、pip(conda)でパッケージ:awsebcliをインストールするか、
もしくは以下のGithubサイトからEB Cliのソースを取得しインストールする必要があります。

公式サイト上のEB Cliインストール情報

AWS Elastic Beanstalk

EB Cliソース from GitHUB

GitHub - aws/aws-elastic-beanstalk-cli-setup: Simplified EB CLI installation mechanism.
Simplified EB CLI installation mechanism. Contribute to aws/aws-elastic-beanstalk-cli-setup development by creating an account on GitHub.

各OSともに共通ですが、Python環境を使用PCにインストールする必要があります。
また、virtualenvコマンドのインストールを求められる可能性があります。その場合はpipコマンドでインストールを行ってください。

AnacondaによるPython仮想環境の構築

環境作成

Python上に仮想環境(eb-virt)を作成
$ conda env create -n eb-virt python==3.8
※Pythonバージョンは3.8を指定しています。

仮想環境(eb-virt)に接続

$ conda env activate eb-virt

djangoのインストール

$ conda install django==3.2

django内でプロジェクトを作成 プロジェクト名:ebdjango

$ django-admin startproject ebdjango

プロジェクト名のディレクトリが作成されます。
※今回はebdjangoが作成される
$ cd ebdjango

AWSへのデプロイ

ACCESS-IDとSECRET-KEYの取得

AWS Consoleにログインしアカウントリストからセキュリティ認証情報内にあるAWS IAM認証情報にあるAWSアクセスキー内のアクセスキーの作成ボタンで作成

EB CLI リポジトリを初期化

$ eb init -p python-3.8 django-tutorial
※この際にACCESS-IDとSECRET-KEYが必要

You have not yet set up your credentials or your credentials are incorrect
You must provide your credentials.
(aws-access-id): $$$$
(aws-secret-key): %%%%
Application django-tutorial has been created.

EC2インスタンスにSSHを使用して接続できるようにする

$ eb init

Cannot setup CodeCommit because there is no Source Control setup, continuing with initialization
Do you want to set up SSH for your instances?
(Y/n): y

Select a keypair.
1) &&&&&&&
2) [ Create new KeyPair ]
(default is 1): 2

Elastic Beanstalk環境の作成

eb create django-env

#

エラーメッセージ

Instance deployment failed to install application dependencies. The deployment failed.

調査方法

配置したrequirements.txt内で誤ったバージョンを指定している可能性があります。

調査方法としてElasticBeanstalkのログを確認してください。
AWSコンソールのElasticBeanstalk画面にある左側のメニューより
該当のアプリケーション名:django-env内にあるログをクリックし「ログのリクエスト」でログ出力したうえで
ログ内のError行などを確認します。

作成したプログラムソースをAWS ElasticBeanstalkにデプロイ

$ eb deploy
デプロイを行う

デプロイしたプログラムをブラウザで確認

$ eb open
ウェブサイトを開く

コメント

タイトルとURLをコピーしました