2022年12月8日に、エンジニア向けオンライン勉強会「雲勉」を開催しました。
今回のテーマは「AWS App Runner に Laravel をデプロイして LINEBot を作ってみよう」です。
昨年リリースされた AWS AppRunner を使用して PHP アプリケーション(Laravel)をデプロイする内容について、クラウドインテグレーション事業部の有本史紀が解説しました。
この記事では発表内容の一部をご紹介します。
詳しく知りたい方は記事最後のリンクより YouTube にてアーカイブ動画をご覧ください!
AWS App Runner とは
AWS App Runner(以下 App Runner) は、「コンテナ化されたウェブアプリケーションや API を開発者が簡単かつ迅速にデプロイできるフルマネージド型サービス」です(AWS HPより)。
裏側で AWS Fargate が実行されているので自動でスケーリング、AZ(Availability Zone)の分散が行なわれます。
そのため、インフラに関する詳細な知見がなくても、コンテナアプリケーションをデプロイすることが可能です。
App Runner でできることとして、以下が挙げられます。
- AppRunner 単体による Web アプリケーションの構築
(独自のドメインが自動的に払い出されるため、他サービスとの連携が不要) - オートスケーリング
- CI / CD 環境の構築
(Amazon ECR に Docker イメージがプッシュされた際や Git リポジトリにプッシュされた際に可能) - Amazon CloudWatch でのメトリクスの監視やログの管理
- Amazon Route 53 でのカスタムドメイン作成
- AWS IAM による他のサービスとの連携の制御
(ただし CLI の知識が必要)
また、App Runner でできないこととして、以下が挙げられます(2022年11月時点)。
- シークレットマネージャー、パラメータストアの連携
(環境変数は AppRunner のインスタンス毎にコントロールパネルから設定する) - 複数のイメージ管理
(PHP だと nginx と php-fpm のイメージをタスク定義ファイルで連携するような方法は使えない) - セキュリティグループにおけるインバウンド設定
- 別のサービスから Invoke する
(https://docs.aws.amazon.com/aws-sdk-php/v3/api/classAws.AppRunner.AppRunnerClient.html)
App Runner のユースケースとして以下が考えられます。
- モバイルアプリや API のバックエンドとして利用
- 小規模な Web サイトの CMS システム等として利用
- アプリのプロトタイプ環境として利用
- コンテナでのアプリケーション構築を試してみたい人が利用
これらの概要を踏まえて、LINEBot を利用したアプリを作成します。
AppRunner で Laravel をデプロイ
まずは、AppRunner に Laravel をデプロイする方法について説明がありました。
今回使用した環境、作業に必要なものは以下の通りです。
アプリケーションのディレクトリ構造は以下の通りです。
PHP の開発において、ローカル環境は「nginx」と「php-fpm」を併用する「docker-compose」を使用した構成を利用することが多いのですが、この構成だと AppRunner にデプロイすることができません。
そのため、別途 ECR にビルドするための Dockerfile をひとつ用意することが必要です。
詳しい手順については実際の画面と共にご紹介していますので、ぜひ動画でチェックしてください。
LINEBot 作成
次に LINEBot の作成について解説がありました。
まずは、LINE Developers のアカウントにログインして「Create a new channel」から「Messaging API」を作成します。
続いて、Laravel で実装するために、まずは GitHub で公開されている「LINE Messaging API SDK for PHP」をインストールします。
構造は、以下のようなイメージとなっています。
詳しい手順は実際の画面と共にご紹介していますので、ぜひ動画でチェックしてください。
まとめ
AppRunner は Dockerfile ひとつで手軽にデプロイ、CI/CD もできるため、コンテナベースのアプリケーション入門におすすめです。
また、LINEBot はバックエンドの設計に注力できるだけでなく、拡張性もあるため「何か作ってみたいけど何を作ればいいかわからない」方におすすめとのことでした。
詳しく知りたいという方はアイレットの YouTube にてアーカイブ動画をアップしていますので、ぜひご覧ください!
https://youtu.be/uEoC587oHoQ
次の雲勉は12月22日、テーマは「AWS の ELB について改めて学んでみた」です!
ぜひご参加ください!