Laravel Vapor とは
Laravel を AWS Lambda 上で動作させることができる 有料 のツールで、
Serverless な Laravel アプリケーションを構築することができ、
さらには、S3、RDS、ALB、 等のWebアプリケーションに必要な各種AWSのサービスと連携することができます。
以下のサイトから利用を開始することができます。
https://vapor.laravel.com
構築について
基本的には公式からドキュメントが提供されているので、その手順を参考に今回アプリケーションをデプロイしました。
有料のため様子見てる方や、どのように使うのか気になる方向けに構築手順を記載します。
環境
Vapor requires that your application be compatible with PHP 7.3+ and Laravel 6.0+.
上記が公式が要求する必要環境で、 PHP7.3以上、Laravel6.0を必要とします。
今回自分が構築に使用した環境は以下です。
php : 7.3.9
composer : 1.8.0
Laravel : 6.0
事前準備
事前に、Vapor への登録と、AWSのIAMユーザーの作成が必要となります。
公式からは、複数のAWSサービスを扱うため、IAMユーザーのポリシーを、 AdministratorAccess
で作成することを推奨しています。
作成した、AWSのIAMユーザーを、 Vaporの TEAM SETTING1 に追加します。
Laravel プロジェクトの作成
Vapor にてデプロイするプロジェクトを作成します。
composer を使って、Laravel のプロジェクトを作成します。
composer create-project --prefer-dist laravel/laravel SampleProject
作成の際は必ず、 Laravel6.0
を使用してください。
(今回は特に設定の変更や、機能追加はせずそのままデプロイしますのでプロジェクトの作成だけします。)
Vaporのツールをインストール
作成した、Laravel プロジェクトのディレクトリの直下にて、
デプロイ時に使用するのVaporCLIをComposer でインストールします。
$ composer require laravel/vapor-cli
$ composer global require laravel/vapor-cli
※ php vendor/bin/vapor で、 VaporCLIを実行できますが、長いので、
以下の説明では、vapor='php vendor/bin/vapor' でaliasを作っています。
インストール完了後、以下のコマンドでVaporにログインします。
$ vapor login
Vaporのコアパッケージをインストールします。
$ composer require laravel/vapor-core
Vapor プロジェクト の作成
作成した、Laravel プロジェクトのディレクトリの直下にて、コマンドを実行しVapor プロジェクトを作成します。
$ vapor init
実行中、プロジェクト名とデプロイするAWSのリージョン情報を求められるので入力します。
環境の作成
環境用の設定を追加するため、以下のコマンドを実行します。
$ vapor env my-environment
$ vapor env:pull production
Vapor.yml が以下のような状態になります(あくまで例)
id: 2
name: vapor-laravel-app
environments:
production:
build:
- 'composer install --no-dev --classmap-authoritative'
my-environment:
build:
- 'composer install --no-dev --classmap-authoritative'
デプロイ
VaporCLIを使って、Laravelのプロジェクトをデプロイします。(先程作成した production
環境設定を使います)
$ vapor deploy production
結果
Project deployed successfully. (3m12s)
=============== =====================================================
Deployment ID Environment URL (Copied To Clipboard)
=============== =====================================================
5079 https://xxxxx-xxxx-xxxxxxx.vapor-farm-xxx.com
=============== =====================================================
確認
作成したアプリケーションを確認するには、作成時にできたURLを確認します。
Vaporのダッシュボードからも作成したプロジェクトが確認できます。
AWSのコンソールから作成されたLambda関数も確認できます。
まとめ
個人的には、とても簡単にアプリケーションのデプロイができてすごい!
とテンションが上がりました!
(Lambda上でLaravelを動かそうとして断念した過去があるからななおさら)
現在早期アクセス段階で、商用利用にはもう少しかかるかなという感じですがとても便利なツールだと思いました。
他のAWSのサービス(S3,RDS,etc) にもつなげるようなので、今後がとても楽しみなプロジェクトです。
この記事を見て、使って見ようとか、興味を持っていただけたら幸いです。
注釈
-
クライアントまたはトピックごとにプロジェクトを整理するの方法です、Vapor作成時に自動的に作成されます。 ↩