🌟

AWSガチ初心者がHonoをLambda/APIGatewayにデプロイするまで

2025/01/19に公開

概要

Hono が熱いらしいと聞いて、試しに API でも作ってみようかと思った。
公式ページにデプロイ方法まで載っているし、その通りにやれば行けるかなと思った。
けど AWS 初心者すぎてデプロイまで3日もかかってしまった…という話です。

Getting Started できず

何はともあれ Getting Started だと思い、以下のページを参考にした。

https://hono.dev/docs/getting-started/basic

このページでは npm create hono@latest というコマンドで初期化を行う。いくつかの選択肢が出るので aws-lambda を選択してみた。が、ここでまず少し苦戦。。

まず、 aws-lambda を選択した場合はローカル起動するコマンドがない。ちょっと困った。

次に、AWS 側の設定を行い、Lambda も作成しておいた。この状態でデプロイは成功したものの、 Lambda での「テスト」が成功しない。 Runtime.ImportModuleError index not found のようなエラーが出る。
おそらく何かの設定が間違っているのか、デプロイしたもののパスが誤っているのか… AWS 初心者すぎて検討がつかず。

Getting Started AWS CDK

次に、AWS Lambda 用のページを見てみた。

https://hono.dev/docs/getting-started/aws-lambda

なんだか先ほどの Getting Started basic のページと違う…! AWS CDK を使うと書いてある。

AWS CLI は使ったことがあるけど、CDK は初めて。インストールしてみたものの、Windows の PowerShell だとそのままでは使えない…orz 以下の記事のおかげで解決🙏

https://zenn.dev/kuramaenaputo/articles/pssecurity-exception-20231231

その後は、先ほどの 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