AWSガチ初心者がHonoをLambda/APIGatewayにデプロイするまで
概要
Hono が熱いらしいと聞いて、試しに API でも作ってみようかと思った。
公式ページにデプロイ方法まで載っているし、その通りにやれば行けるかなと思った。
けど AWS 初心者すぎてデプロイまで3日もかかってしまった…という話です。
Getting Started できず
何はともあれ Getting Started だと思い、以下のページを参考にした。
このページでは npm create hono@latest
というコマンドで初期化を行う。いくつかの選択肢が出るので aws-lambda
を選択してみた。が、ここでまず少し苦戦。。
まず、 aws-lambda
を選択した場合はローカル起動するコマンドがない。ちょっと困った。
次に、AWS 側の設定を行い、Lambda も作成しておいた。この状態でデプロイは成功したものの、 Lambda での「テスト」が成功しない。 Runtime.ImportModuleError index not found
のようなエラーが出る。
おそらく何かの設定が間違っているのか、デプロイしたもののパスが誤っているのか… AWS 初心者すぎて検討がつかず。
Getting Started AWS CDK
次に、AWS Lambda 用のページを見てみた。
なんだか先ほどの Getting Started basic のページと違う…! AWS CDK を使うと書いてある。
AWS CLI は使ったことがあるけど、CDK は初めて。インストールしてみたものの、Windows の PowerShell だとそのままでは使えない…orz 以下の記事のおかげで解決🙏
その後は、先ほどの Getting Started for AWS Lambda のページのとおりに。 cdk init
したり、 xxx-stack.ts ファイルを編集したり。
AWS CDK を使って TypeScript プロジェクトを始めるという手もあるのか~と勉強になった。
cdk deploy に恐ろしく時間がかかる
さて、準備が終わったのでいざデプロイ。 cdk deploy
コマンドの実行です。ちなみに、AWS CLI の方の credentials 設定は完了済み。
cdk deploy
コマンドを実行すると、Docker の処理が始まります。何やら yarn やら pnpm やらをグローバルインストールしている。
しかし、bun のインストールにあまりにも時間がかかる。待ち続けてたら700秒くらいかかって完了しました。なぜこんなに時間がかかるのか…。
次に esbuild のインストールに時間がかかる。待ち続けたら、なんと4000秒もかかりました。自宅の回線速度は問題ないはずなんだけど、謎です。。
さて、デプロイ直前でコケました。 cdk bootstrap
し忘れてない?みたいなメッセージが出たので、素直に実行。これで事前準備みたいなことをしてくれるんですね。
再度 cdk deploy
をしたら、無事にデプロイが完了しました!(さきほど時間がかかったパッケージのインストールは、キャッシュが使われて即終了。よかった。
デプロイ完了🎉
さて、デプロイが完了したので AWS コンソールへ。API Gateway の「テスト」を実行。
以下の通り、動作してることを確認できました!よかった!
AWS 初心者すぎてかなり初歩で躓いた感じはあるけど、晴れて Hono を使った API 開発を進めていけそうです🙏
Discussion