LoginSignup
3
2

More than 5 years have passed since last update.

AWS Beanstalk(Multi-Container Docker)をPythonで試してみた ! Web編その1 / 初期設定

Last updated at Posted at 2019-04-02

かなりご無沙汰です。

BeanstalkのMulti-Container DockerをPython Flaskを使って試してみたので

備忘録もかねての投稿になります。

※備忘録なのでメモレベルの記事なのはご容赦を。

連載一覧

Beanstalkとは

BenastalkはAWSのサービスを利用した

Webアプリケーションやバッチアプリケーションの環境を手軽に作ってくれるサービスです。

通常、AWSを利用してアプリケーションを構築する場合は

EC2インスタンスを立て、ミドルウェアやプログラム一式をセットアップし、

ロードバランサー(ELB/ALB)を立てEC2に紐付けを行い、

負荷に応じて自動的にインスタンスを増減する設定を行う・・・など

たくさんの工程が必要になります。

Beanstalkではこれらを手軽にセットアップすることができます。

また、JavaのアプリケーションであればApache/Tomcatは自動で構築され

warファイルをアップロードするだけで動作が可能で、

Python(Flask/django)ではApache/uWGISが自動構築されるので

プログラム一式をアップロードするだけで動きます。

より自由度の高い環境を用意する場合はDockerを利用することで

EC2上に任意のDockerコンテナを複数立ち上げることができます。

今回はそのMulti-Container Docker構成について書いていきます。

構成説明

構成としてはBeanstalk上にNginxのコンテナとuWSGIのコンテナを立ち上げます。

ざっくりとした構成イメージは以下。

AWS構成-メモ.png

今回はDBは利用しません。BeanstalkはRDSも立ち上げられますが

Beanstalkの環境を終了させるとRDSも終了してしまうようなので

RDSを立ち上げる場合はBeanstalkとは別で立ち上げると良いでしょう。

また、multi container dockerの場合はコンテナを落とすと

ログなども消失してしまうのでCloudWatchLogsと連動させます。

 

今回は基本的にCLIにて構築を進めて行きます。

そのためAWS CLIなどは設定済みの前提。

Benastalk専用のコマンドラインツールはこちらからセットアップしてください。

Beanstalkの用語や初期設定

Beanstalkでは重要なこととして

【アプリケーション】【環境】という概念があります。

 

一般的なシステム開発では本番(商用)環境、結合試験環境、受入環境・・・など

1つシステム(サブシステム)内に複数のシステムセットがあると思います。

これが【環境】。

 

ですのでそれぞれの環境ごとに上述の絵にあるAWSサービスが存在します。

この環境をグルーピングした単位が【アプリケーション】となります。

 

アプリケーションを作る場合はEBコマンドラインツールを利用しますが

コマンドを実行するカレントディレクトリが重要です。

このディレクトリにあるファイルがBeanstalkのEC2サーバに配備されます。

また、ディレクトリに特定のファイルがあるとアプリケーション初期化時に

自動でその構成のEC2を作成してくれます。以下が一例。

  • application.pyはあればPythonの実行環境
  • DockerfileであればシングルコンテナのDocker構成
  • Dockerrun.aws.jsonがあればマルチコンテナのDocker構成

今回はDockerrun.aws.jsonを利用しますが

このファイルの詳細は次回以降でお伝えします。

Beanstalkの初期設定手順

eb init

を実行します。AWSプロファイルを分ける場合は[--profile matsui]などをしましょう。

対話にていくつか質問されます。

9) ap-northeast-1 : Asia Pacific (Tokyo)
 ・
 ・
 ・
(default is 3): 9

リージョンの設定では東京リージョンを選びます。

Enter Application Name
(default is "xxxxxxx"):

アプリケーションの名前を設定します。

デフォルトでは実行しているディレクトリの名前になりますので

問題ないのであれば空白でEnterを。変更の必要があれば変えてください。

It appears you are using Multi-container Docker. Is this correct?
(Y/n): Y

先ほどお伝えしたようにDockerrun.aws.jsonファイルがあるので推測してくれました。

問題ないのでYを設定します。

Do you want to set up SSH for your instances?
(Y/n): Y

SSHでEC2(Dockerのホストサーバ)に繋ぐ必要があるか聞かれます。

繋ぎたいのでYとしましょう。すると・・・

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

SSHのkeypairが聞かれます。AWSアカウントに登録済みのものが出ますので

適切なものを選択してください。ここで設定したkeypairの秘密鍵(pemファイル)は

ローカルに「~/.ssh/」に置いておく必要があります。

ここに置くと環境作成後に「eb ssh」コマンドで自動的にその鍵が選択されて接続することができます。

ここまで行くと環境が出来上がりますのでAWSのWebコンソールからBeanstalkの

東京リージョンの画面を見るとアプリケーションが作成されていることが確認できます。
(左上の「xxxxx」がアプリケーション名)

Beanstalkコンソール

続きは次回に!

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2