はじめに
AWS ElasticBeanstalkとは、Webアプリケーションのデプロイとスケーリングを迅速に実施するのを目的とした開発者向けのサービスです。Webアプリケーションは、Elastic Beanstalkが管理するEC2インスタンス上にデプロイが行われ、このEC2インスタンスはElastic Beanstalk上で特に何も設定しなければ、デフォルトVPC(AWSアカウントを作成するとデフォルトで用意されているVPC)のサブネット上に作成されます。ですが、デフォルトVPC以外のVPC環境にElastic BeanstalkのEC2インスタンスを作成したい場合もあるかと思いますので、本記事ではその場合の手順をご紹介します。
VPC環境の事前準備
今回は、事前に下記のVPC環境を用意しました。
- VPC
- VPC名:my-vpc-01
- アドレス範囲:10.0.0.0/16
- パブリックサブネット
- サブネット名:my-puclib-subnet-01
- アドレス範囲:10.0.1.0/24
- 配置先AZ:ap-northeast-1a
- インターネットゲートウェイ
- インターネットゲートウェイ名:my-igw
- ルートテーブルの修正
Elastic Beanstalkを使用したアプリケーションのデプロイ
1. Elastic Beanstalkコンソールを表示
AWSコンソールでサービス検索を行い、Elastic Beanstalkのコンソールを表示します。表示後、右側にある「アプリケーションの作成」ボタンをクリックします。
2. アプリケーション名の入力
下記画面の「アプリケーション名」の箇所に任意のアプリケーション名を入力します。今回は、My-ebapplというアプリケーション名にします。
3. プラットフォームとアプリケーションコードの選択
下記画面にてアプリが稼働するプラットフォームとアプリケーションコードを選択します。今回は、Pythonのサンプルアプリケーションを動かすことにします。
ここで、「アプリケーションの作成」ボタンを押すと、Elastic BeanstalkはデフォルトVPCに対して、サンプルアプリケーション稼働用のEC2インスタンスを作成しにいってしまいますので、今回は「より多くのオプションの設定」ボタンを押して、ネットワーク関連の設定画面を探します。
4. ネットワークの設定
「ネットワーク」カテゴリーにおける「編集」ボタンをクリックします。
すると下記のような画面が表示され、VPCやインスタンスの設定項目上に、事前準備していたVPCやサブネットを選択することができます。
今回はデータベースは使用しないので、「データベース設定」の箇所にはチェックは入れず、右下の「保存」ボタンをクリックします。
前の画面に戻って、「ネットワーク」カテゴリーを見ると、VPCやサブネットなどが表示されていることを確認できます。
5. その他の設定を確認
今回使用するEC2インスタンスは、下記画面に表示されている無料利用範囲内のものを使用します。「編集」ボタンをクリックすれば、インスタンスタイプなどを自由に変更することもできます。
また、Elastic Beanstalkが作成するEC2インスタンスにSSH接続できるように、仮想マシンのキーペアを登録しておきます。下記の「セキュリティー」カテゴリーにおける「編集」ボタンをクリックします。
下記のような画面が表示されるので、「仮想マシンアクセス許可」の「EC2キーペア」で表示されるキーを選択します。対応する秘密鍵がPC上に存在していることを確認ください。その後、右下の「保存」ボタンをクリックします。
前の画面における「セキュリティー」カテゴリーの「仮想マシンキーペア」の箇所に値が入ったことが確認できます。
6. アプリケーションのデプロイ
下記画面の右下にある「アプリの作成」ボタンをクリックします。
アプリケーションのデプロイに向けたElastic Beanstalkの環境作成が始まります。
作成には数分かかりますが、順調に進んでいることが確認できます。
最終的に下記の画面が表示されれば、Elastic Beanstalkの環境作成が終わり、アプリケーションのデプロイは完了です。
7. サンプルアプリケーションの稼働確認
下記Elastic Beanstalkコンソールの左側にある「環境」をクリックすると、右側の「すべての環境」のところに今回作成した環境が表示されます。記載のURLをクリックするとサンプルアプリケーションをチェックすることができます。
サンプルアプリケーションは下記のように表示されていればOKです。
8. 作成したEC2インスタンスへのSSH接続確認
Elastic Beanstalkにより作成されたEC2インスタンスは、下記画面の右側に表示されているものになります。
EC2インスタンスのパブリックIPアドレスは、13.230.86.212と表示されていますので、このIPアドレスを使用してSSH接続を行います。
[testuser@localhost ~]$ ssh -i ./.ssh/aws-eb-key ec2-user@13.230.86.212
The authenticity of host '13.230.86.212 (13.230.86.212)' can't be established.
ECDSA key fingerprint is SHA256:mmddvJeAvzlU3mfKcdhkI7v2+GkNY5L9Ure4k1Xg3bY.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '13.230.86.212' (ECDSA) to the list of known hosts.
_____ _ _ _ ____ _ _ _
| ____| | __ ___| |_(_) ___| __ ) ___ __ _ _ __ ___| |_ __ _| | | __
| _| | |/ _ \/ __| __| |/ __| _ \ / _ \/ _\ | '_ \/ __| __/ _\ | | |/ /
| |___| | (_| \__ \ |_| | (__| |_) | __/ (_| | | | \__ \ || (_| | | <
|_____|_|\__,_|___/\__|_|\___|____/ \___|\__,_|_| |_|___/\__\__,_|_|_|\_\
Amazon Linux 2 AMI
This EC2 instance is managed by AWS Elastic Beanstalk. Changes made via SSH
WILL BE LOST if the instance is replaced by auto-scaling. For more information
on customizing your Elastic Beanstalk environment, see our documentation here:
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html
[ec2-user@ip-10-0-1-58 ~]$
問題なくSSH接続することも確認できました。Elastic Beanstalkの文字がでかでかと表示されているのもなかなか味わい深いです。
おわりに
今回は、デフォルトVPC以外のVPCに対して、AWS Elastic Beanstalkのアプリケーションデプロイ先のEC2インスタンスを作成するための手順を紹介しました。私自身はアプリ開発未経験のインフラSEですが、AWSは開発者向けのサービスが豊富なため、これを機会にアプリの勉強もしていこうと思います。