AWS Elastic Beanstalk のデプロイ環境と基礎知識
仕事で既に用意されたAWS Elastic Beanstalk 環境にデプロイする機会があったので環境構築と使い方についてメモしておきます。AWSやGitについては説明を省くのでこれから使い始めたい方は以下のページを参考にどうぞ。
AWS Elastic Beanstalk とは
AWS Elastic Beanstalk は、Java、.NET、PHP、Node.js、Python、Ruby、Go および Docker を使用して開発されたウェブアプリケーションやサービスを、Apache、Nginx、Passenger、IIS など使い慣れたサーバーでデプロイおよびスケーリングするための、使いやすいサービスです。
お客様はコードをアップロードするだけで、Elastic Beanstalk が、キャパシティのプロビジョニング、ロードバランシング、Auto Scaling からアプリケーションの状態モニタリングまで、デプロイを自動的に処理します。同時に、お客様のアプリケーションが稼動している AWS リソースの完全なコントロールを維持でき、いつでも基本的なリソースにアクセスすることができます。
もう少し具体的に言うとgitのリポジトリをAWS Elastic BeanstalkにpushしてAWS環境に自動デプロイしてくれるサービスです。デザイナーやフロントエンジニアは既に用意されたAWS Elastic Beanstalk環境にpushするだけでデプロイを行うことができます。
デザイナーやフロントエンジニアがAWS Elastic Beanstalkを使うには
AWS Elastic Beanstalkを使うために必要なソフトウェアは以下の通り。
- 権限を付与されたAWS IAMアカウント(アクセスキー・シークレットキー)
- git
- git-flow(必須ではない)
- Homebrew
- Python(2.7以上)
- Elastic Beanstalk CLI(3.x系)
IAMアカウント
Gitは既に使っている前提で、デザイナーやフロントエンジニアであればインフラエンジニアからIAMアカウントが発行されるはずです。発行されたIAMアカウントでAWSマネジメントコンソールにアクセスし、アクセスキーとシークレットキーをメモしておきます。
このアクセスキーとシークレットキーをユーザーrootの.aws/credentials
にAWSへアクセスするためのプロファイル<profile-name>
を定義します。<profile-name>
の部分は任意の指定が可能です。
[<profile-name>]
aws_access_key_id = <AWS_ACCESS_KEY_ID>
aws_secret_access_key = <AWS_SECRET_ACCESS_KEY>
Python
詳しいインストール方法は記載しませんがHomebrewからインストール可能です。インストールが完了したらバージョンを確認しておきます。
$ brew install python
$ python -V
Python 2.7.9
Elastic Beanstalk CLI
AWS Elastic Beanstalkをコマンドラインから操作するためにElastic Beanstalk CLIをHomebrew経由でインストールします。インストールが完了したらこちらもバージョンを確認します。
$ brew install aws-elasticbeanstalk
$ eb --version
EB CLI 3.3.2 (Python 2.7.6)
これでAWS Elastic Beanstalkに必要な環境は用意できました。
デプロイするための準備
インフラエンジニアがすでに環境を用意している前提でデプロイするための準備を行います。AWS Elastic Beanstalkにデプロイするためにはまずgitプロジェクトを定義します。
$ mkdir <project_directory>
$ cd <project_directory>
$ git init
AWS Elastic Beanstalk
次に$ eb init --profile <profile-name>
を実行し質問形式でElastic Beanstalkプロジェクトを設定していきます。<profile-name>
はIAMアカウントを設定した際に.aws/credentials
に記載したプロファイルネームです。質問は以下の3つになります。
- リージョン(AWSのリージョン)
- アプリケーション(用意されているアプリケーション)
- 環境(テスト、本番等)
アプリケーションと環境はインフラエンジニアが用意しているはずなので、基本的に番号を入力して選択していくだけです。リージョンについてはマネジメントコンソールから確認が必要ですが、日本であればTokyoになるでしょう。コマンドが完了すると.elasticbeanstalk/config.yml
と.gitignore
が作られます。
.elasticbeanstalk/config.yml
にはgitのブランチmaster:
に合わせて環境名environment: app-prd
が指定されます。masterブランチでデプロイを実行した際、app-prd
の環境にデプロイするという指定です。
branch-defaults:
master:
environment: app-prd
global:
application_name: appname
default_ec2_keyname: hoge-fuga
default_platform: 64bit Amazon Linux 2015.03 v1.3.2 running PHP 5.6
default_region: ap-northeast-1
profile: <profile-name>
sc: git
.gitignore
の中身はこのようになっています。
# Elastic Beanstalk Files
.elasticbeanstalk/*
!.elasticbeanstalk/*.cfg.yml
!.elasticbeanstalk/*.global.yml
これでデプロイの準備が完了しました。あとは$ git add ...
と$ git commit ...
してコミットしておきます。
AWS Elastic Beanstalkにデプロイする
デプロイ作業は簡単、コマンド1発です。コマンドを実行するとインフラエンジニアの手を煩わせず自動でデプロイ処理が行われます。
$ eb deploy
デプロイ先を確認するのもコマンドから行えます。ブラウザが起動しデプロイ先が表示されます。
$ eb open
developブランチをテスト環境にデプロイするには
developブランチの場合はテスト環境にデプロイしたい、そんな時はdevelopブランチにcheckoutし$ eb init
を行うことでブランチ設定を追加することができます。
branch-defaults:
master:
environment: app-prd
develop:
environment: app-dev
...
環境情報を知りたい
$ eb status
Environment details for: <env-name>
Application name: <app-name>
Region: ap-northeast-1
Deployed Version: fba1
Environment ID: <id>
Platform: 64bit Amazon Linux 2015.03 v1.3.2 running PHP 5.6
Tier: WebServer-Standard-1.0
CNAME: <xxxxxxx.elasticbeanstalk.com>
Updated: 2015-05-18 11:59:23.048000+00:00
Status: Ready
Health: Green
Alert: An update to this CLI is available.
マネジメントコンソールを開く
$ eb console [environment_name]
アプリケーションの環境一覧を表示する
$ eb list
環境に設定されている環境変数を表示する
$ eb printenv [environment_name]
環境変数を設定することもできます。
$ eb setenv key=[value]
デフォルトの環境を設定する
$ eb use <environment_name>
その他のコマンド
以下のコマンドを使う機会はそれほどないと思いますが一応紹介しておきます。
環境を新たに作成する
$ eb create <env-name>
実行中の環境をシャットダウンする
$ eb terminate [env-name]
アプリケーションを完全に削除する
このコマンドを実行するとアプリケーションが消えるのでかなり危険なコマンドです。
$ eb terminate --all
まとめ
デプロイ系のツールをはじめて使いましたが便利ですね。すべては紹介しきれていないので下記ドキュメントを改めて読むとコマンド周りを一通り覚えることができると思います。