家族で日帰りで観光地に行ってきたんですが、子供の希望で食事はファストフード と相なりました...。

あるあるなんでしょうか?私だけですかね...。

そんなこんなな今日この頃ですが、Hackerの皆様はいかがお過ごしでございましょうか。本日はVaporに関しての連載記事を書いていきます。

お知らせ

本連載は、かなり丁寧に手順を書いていきますので、環境構築に慣れておられる方にとってはちょっと冗長かもしれません。 その場合読み飛ばしを促すリンクを各所に入れますのでよろしければご利用ください。連載回数も結構長くなりそうです。

本記事のゴール

VaporをつかってLaravelをサーバレス環境にデプロイし、インフラの運用コストの低減を試みる

着手の経緯

PHPのフレームワークとしてトップシェアを誇り、私自身もとても愛用しているフレームワークLaravelですが、前からVaporを試してみたいとずっと思っていました。

開発環境はともかく、商用環境としてデプロイする場合 は、

といった古典的な構成か

といったちょっと少人数開発ではFATな環境しかないと認識しています。

あるいは、Elastic Beanstalkといったアプリエンジニア向けのインフラを気にせず注力できる!

といったような サービスを使うという選択肢もありますが、正直開発環境がLaravel Sailで簡単に作れるのに比べてこれもまた 学習コストが高いなぁと思っていました。

というのも私のような根元がバックエンドエンジニアの人間にとっては、LAMP構成を作ってしまうよりハードルが高いな と常々思っていたので...。

Vaporについて

公式のドキュメントはこちらです。

LPを見る

ということで、早速VaporについてLP(トップページ)を見てみます。

vp1.png

Laravel Vapor is a serverless deployment platform for Laravel, powered by AWS. Launch your Laravel infrastructure on Vapor and fall in love with the scalable simplicity of serverless.

Laravel Vaporは、AWSが提供するLaravelのサーバーレスデプロイプメントプラットフォームです。Vapor上でLaravelのインフラを立ち上げ、サーバーレスのスケーラブルでシンプルな機能に惚れ込んでください。

おお、これは期待できそうです。

下記の部分を見るとパイプラインがあったり、ビルトインCDNやCIの機能もあって、VercelをLaravelでも使えるようにしたという印象がありますね。

機能盛りだくさん

機能盛りだくさん

環境構築開始

会員登録

下記の「Price」の欄からFreeプランを立ち上げてみます。立ち上げにあたり当然のことながらあらかじめAWSアカウントと決済手段の登録は必要になることと、インフラのコストはかかってくるので要注意と書いてあります。

vp3.png

名前・メールアドレス・パスワードを入力して会員登録

vp4.png

すぐログインができました。

vp5.png

AWSとの紐付け

AWSとの紐付けを行います。下記ボタンをクリック。ここに、AWSの会員登録で発行した情報を登録していきます。

vp6.png

AWSに移動し、IAMを作成

こちらからAWSのマネジメントコンソールにログインし、IAMの画面に移動します。

サイドメニューから ユーザーをクリックします。

vp7.png

ユーザーの作成を選択

vp8.png

後で事例で使うようにわかりやすいようにするためLaravelVaporと入力しますが、このユーザー名でなくとも大丈夫です。

vp9.png

ポリシーを直接アタッチするを選択し、AdministratorAccessを選択して、「次へ」を押します。詳しい手順は画像を見てください。

vp10.png

なお、この権限はとても強いので、作成後のIAMユーザーの取り扱いには注意が必要です。キーが万一漏洩すると不正なインスタンスを立ち上げられるなど 金銭的に損害が出る可能性があり、流用はせずにLaravel Vaporのためだけに使うようにしましょう。

vp11.png

確認して「ユーザーを作成」を押します。

ユーザー一覧画面に「LaravelVapor」ユーザーが追加されています。

vp12.png

ユーザー名をクリック。

ユーザー情報が表示されるので、「セキュリティ認証情報」 を押して、下にスクロールして 「アクセスキー」まで移動し、「アクセスキーを作成」 を押します。

vp13.png

「サードパーティーサービス」を選択。

vp14.png

ベストプラクティスとして、アクセスキーなどの長期的な認証情報を作成する代わりに一時的なセキュリティ認証情報 (IAM ロール) を使用し、AWS アカウントのルートユーザーアクセスキーを作成しないでください

と代替案が表示されますが、VaporではIAMユーザーを作らないと認証ができないので、、

このまま進めます。

vp15.png

説明タグには何か適当に入れておきます。

後で一覧から用途がわかるように入力しましたが...ぶっちゃけキーの名称で十分わかるので空欄でも良かったかもと思いました。

「アクセスキーを作成」を押します。

vp16.png

作成したキー・シークレットは画像の通り、Vapor側で入力します。

Vaporに戻り、必要事項を入力

下記の画像のように入力します。

vp17.png

100ドルまでを上限としてAWSのインフラを使うように初期入力値が入っていますが、100ドルは結構大金です。

従量課金ということで毎月このコストがかかり、年だと2024/1現在の相場だと1200ドル=18 万円近いということになるので くれぐれも注意しましょう。

不備の事態に懐が痛まないよう、また今回は検証目的ということで5ドルに私は変更しました。


クラウドインフラをご利用に慣れていない方は上限値を設定画面からあらかじめ設定することを習慣づけていただくと、より安全にご利用いただけるかなと思っています。

AWSとのリンク完了

vp18.png

無事、AWSとのリンク作業は完了しました。


即時設定が完了したことから、誤った入力値が入っていないかどうかは実際にデプロイを行うまでわからない仕様になっていると思います。(また、VaporからAWSにインフラ構築の確認のため、無駄なリクエストはしないでしょう。)

ですので、次回の連載でその辺りを確認してまいります。


第1回の記事といたしましてはここまでとさせていただきます。

まとめ

AWSとVaporに確認がまたがりその面で手間がかかりそうなこと、また自分自身も手順をひとつひとつ確認しながら、情報を発信したいと思っていることから。

連載が長くなりそうですが、どうかお付き合いを頂けますと幸いに存じます。


この記事が何かのお役に立てれば幸いです。
最後までお読みいただきありがとうございました!

連載の第2回 は下記のリンクからどうぞ!