Cloud9上でElastic Beanstalk CLIを使ってデプロイしてみる
AWS Developer Associateの試験勉強をしていて、デプロイの方法がいまいちわからなかったり、Elastic Beanstalkを使ってみたかったのでEB CLIを使ってデプロイを試しにやってみました。
AWS Cloud9 は、ブラウザのみでコードを記述、実行、デバッグできるクラウドベースの統合開発環境 (IDE) です。これには、コードエディタ、デバッガー、ターミナルが含まれています。
AWS Cloud9にはIDEの機能が付いており、アプリケーション開発にとって必要なツールや機能を全て兼ね備えているため、外部からのインストールやツールを購入する必要がありません。
ブラウザ上での操作になるため、端末の環境に左右されることなく使用できます。
EB CLI は AWS Elastic Beanstalk のコマンドラインインターフェイスで、ローカルリポジトリからの環境の作成、更新、およびモニタリングを簡単にできます。
このCloud9でElastic Beanstalk CLIを使用してImmutableデプロイとBlue/Greenデプロイを試しにやってみます。
Cloud9の環境構築
簡単なexpressのアプリを用意しておきます。
//c9でファイルやディレクトリを簡単に開けるようになる
npm i c9 -g
//フォルダを作成
mkdir ~/environment/demoDeploy
//npm環境をセットアップして、package.jsonを生成
npm init -y
//expressをインストール
npm i express --save
//ファイルを作成
touch index.js app.js index.html style.css
curl -s http://169.254.169.254/latest/meta-data
のコマンドを使うことでEC2の情報を見ることができます。次の画像のようにしてセキュリティグループのidを取得しました。
次にセキュリティグループでポート8080に自分のPCのIPアドレスを許可します。IPアドレスはhttp://checkip.amazonaws.com
と検索すると出てきます。
aws ec2 authorize-security-group-ingress --group-id sg-0060fe4bcc3da9653 --port 8080 --protocol tcp --cidr 153.218.160.86/32
//結果を確認できる
aws ec2 describe-security-groups --group-ids sg-0060fe4bcc3da9653 --output text --filters Name=ip-permission.to-port,Values=8080
次にEC2のpublicアドレスを確認してnpm startします。確認したipアドレス:8080でアプリを起動させます。
curl -s http://169.254.169.254/latest/meta-data/public-ipv4
PORT=8080; npm start
ElasticBeanstalk CLIの設定
下のgithubのリンクを参照して、EB CLIをインストールします。
eb initします。設定が終わると.elasticbeanstalkフォルダが作成されます。またCodeCommitにもリポジトリができます。
.ebextensionsフォルダも作成し、configファイルを作成しておきます。
EB create
EB create --single
コマンドで新しい環境を作成し、デプロイします。--singleのオプションを付けることで単一の Amazon EC2 インスタンスを使用して環境を作成します。ロードバランサーは使用しません。
Immutable
Immutableデプロイは一度作成したサーバー(インフラ)は設定変更などを行わず、不変なものとして扱います。デプロイするたびに新しいインフラを構築して、既存のインフラは不要になった後に廃棄されます。
新たに.ebextensions
フォルダ配下にdeploy.configファイルを作成します。
作成したらCodeCommitにプッシュし、eb deploy
でデプロイします。
Blue/Green
ブルーグリーンデプロイメントとは現状の本番環境(ブルー)とは別に新しい本番環境(グリーン)を構築した上で、ロードバランサーの接続先を切り替えるなどして新しい本番環境をリリースする運用方法のことです。
URLをスワップするため実行環境が2つ必要になります。eb clone
コマンドで現環境のクローンを作成します。
expressアプリの一部を変更して、eb deploy
してクローンの方をデプロイします。
新しいほうの環境をデプロイしたら、次のコマンドでURLを切り替えます。
eb swap demoDeploy-prod --destination_name demoDeploy-prod-clone
Version2になっているのが確認できました。
旧環境の方はeb terminate
して消しておきます。
最後に
こちらの動画を参考にさせていただきました。