AWS CodeStarを使って,Django製アプリをデプロイするまで


環境


  • AWS CodeStar

  • Python: 3.6

  • pipenv: 2018.7.1

  • pip: 18.0.0

  • Django: 1.11.18


執筆したきっかけ


  • 研究で開発する実験用システムをデプロイするため

  • AWSに(ちゃんと)初挑戦する!

  • 開発するシステムをそれなりな環境で動かす必要があるため,herokuじゃ厳しそう

  • 毎度手作業でデプロイするのがしんどい


CodeStarとは


AWS CodeStar を使用すると、アプリケーションを迅速に開発および構築して AWS にデプロイできます。

AWS CodeStar


とのこと.

つまり,「CI/CDも含めたWEBアプリの開発環境を,お手軽に構築するよ!」というサービスです.

対応する言語やフレームワークがたくさんあり,困ることはなさそうです.

ちなみに,2019-05-22時点では,


  • Go

  • Node.js

  • Python, (FlaskやDjangoを含む)

  • Ruby on Rails

  • Lalavel

  • Java


などがありました.

さらに,


AWS CodeStar に対する追加料金はありません。CodeStar プロジェクトでプロビジョニングした AWS リソース (例: Amazon EC2 インスタンス、AWS Lambda の実行、Amazon EBS ボリューム、Amazon S3 バケット) に対してのみ料金を支払います。実際に使用した分に対してのみ料金が発生します。最低料金や前払いの義務はありません。

AWS CodeStar の料金


嬉しい限りです.


Djangoのテンプレート

テンプレートは2種類ありました.

1. EC2で実行する

2. Elastic Beanstalkを介して実行する

つまり,Dockerを使うかどうかが大きく違うところでしょうか(間違っていたらすみません)

私の場合,大規模開発でもないので,1でやってみました.


プロジェクトを作成する

スクリーンショット 2019-05-22 19.44.15.png

AWSのコンソールから,CodeStarを選択します

スクリーンショット 2019-05-22 19.45.08.png

テンプレートから,Djangoを選択します.

スクリーンショット 2019-05-22 19.49.50.png

プロジェクト名や,ソースコードのリポジトリを選択します.

私は,GitHubを選択しました.GitHubを選択すると,リポジトリ名やリポジトリをprivateかpublicに選択できます.

スクリーンショット 2019-05-22 19.50.54.png

続いて,AWSCodeStarに権限を付与することを許可します.その他,Amazon ECの設定を編集から,使用するEC2,VPC,サブネットを変更することもできます.

スクリーンショット 2019-05-22 19.54.39.png

ご丁寧に,作成したリポジトリも案内してくれます.

後はデプロイが完了するまで待機です.

スクリーンショット 2019-05-22 20.03.43.png

これで,デプロイ完了です.

スクリーンショット 2019-05-22 20.04.35.png

アプリ自体は,アプリケーションのエンドポイントよりアクセスできます.

今後はGitHub上のmasterへpushすると,CodeStarがそれを検知してデプロイまでやってくれます.


感想

すごい...ただし,現状はCIが回っていません.また,DBはSqliteのままです.これから,頑張ります!!

iOS以外の領域にうとい私でもできました.AWS様々です.


補足

CodeStarが作成したリポジトリのREADMEを見ると,各ファイルの説明や,ローカル環境下でDjango製のアプリを起動するまで書かれていました.また,READMEにはvirtualenvを使用した方法を紹介していましたが,私はpipenvを使用しました.


追記(2019-05-23)

提供された buildspec.yml には,マイグレーションに関わる記述がありません.したがって,追記する必要があります.記述内容に自身はありません

phases:

install:
commands:
# Install dependencies needed for running tests
- pip install -r requirements.txt
# Migrations
- python manage.py makemigrations # 追記
- python manage.py migrate # 追記


参考文献

AWS CodeStarを使っていい感じの開発環境を一瞬で作る