ElasticBeanstalk でAmazonLinux2がサポートされました!

2020年4月30日にAWS Elastic Beanstalk で Amazon Linux 2 ベースの Node.js、PHP、Go、および Ruby プラットフォームの一般提供を発表とアナウンスがありました。

さっそくやってみようと思います。

ElasticBeanstalkの設定

ElasticBeanstalkのコンソールから CreateApplication をクリックします。

名前は好きな名前で作成します。(これがEC2のインスタンスの名前にもなります。)
プラットフォームを今回はPHPを選択すると、AmazonLinux2が選択出来るのがわかると思います。
今回はPHP7.4で作成します。

それでアプリケーションの作成をクリックすると、作成が始まります。
この操作は少し時間がかかります。

待ってる間に小話

webサーバーはNginxでした。

今回PHPを選択したので、どのような拡張機能が入っているかを調べました。(後ほどsshの方法を解説します。

(長いので折りたたみました)

これをみると、かなりの数の拡張機能が入っています。
Laravelの動作環境も満たしているので、これだけでLaravel環境が作れますね。
Laravelの環境を作るのにとても苦労した経験があるので、これはありがたい。

Laravelのデプロイとインストールは公式ドキュメントがあるので参考にしてください。 => Elastic Beanstalk への Laravel アプリケーションのデプロイ

動作確認

作成が完了すると、以下のような画面になると思います。赤丸のところのURLをクリックしてサンプルアプリケーションを確認できます。

アプリケーションのデプロイ

取りあえずphpinfoをデプロイしてみようと思います。 自分のローカルマシンでphpinofo.phpを作成します。
ファイル名はなんでも大丈夫です。

$ echo "<?php phpinfo();?>" >phpinfo.php
$ zip sampleapp1.zip phpinfo.php
  adding: phpinfo.php (stored 0%)

アップロードとデプロイをクリックします

先程作成したファイルを選択します。
選択したらデプロイをクリック

URL/phpinfo.phpにアクセスすると、表示されます。

sshしてみる。

サーバーを自動で作成してくれても、やはりsshはしたい。
というわけで、sshしてみます。

コンソールの 設定 > セキュリティ の編集をおして、sshを選択します。

選択して、適用をおすと、このような注意書きが出ますがこれは「鍵つけるときに新しくインスタンス作るよ〜」ということを言っています。
確認を押します。

そうしたら新しくインスタンスが生成され、前のやつはなくなります。
EIPも新しいのが生成されます。 デプロイしたアプリは消えないので安心してください。

次はmac側で設定します。
ebコマンドを使えるようにpipでインストールする方法もあるのですが、パスを通したりするのでめんどくさいので、brewでインストールします。

$ brew install awsebcli

終わったら下記コマンドでインストールできたか確認します。

eb --version
EB CLI 3.18.1 (Python 3.8.2)

sshの設定をします。

$ eb init --interactive

対話形式なので読みながら選択すれば大丈夫かと思います。

$ eb ssh --setup

これでセットアップします。
こちらも対話形式なので問題ないかと思います。

sshするときは下記コマンドです

$ eb ssh

注意事項としては、鍵は~/.ssh内にないと怒られます。

おわりに

webアプリを作って公開したいけど、インフラの設定をするのがめんどくさい…
そんなときにすごく活躍するサービスだと思います。
ドキュメントルートを変更するのもElasticBeanstalk上のコンソールで出来るのでsshする必要はあまりないかもしれません。
他にもコンソールで設定出来る項目はたくさんありますので、とても活躍出来ると思います