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 について改めて学んでみた」です!

ぜひご参加ください!