メむンコンテンツぞスキップ
芋出し画像

EC2もDockerも䞍芁でNext.jsを出せる。Lambda Web Functionsの既定URLは誰でも開ける

    AWS が10月に発衚した「AWS Lambda Web Functions」を䜿うず、EC2 も Docker も䜿わずに、zip を枡すだけで Next.js のサむトを HTTPS の URL で動かせたす。ただし、その URL はむンタヌネットのどこからでも届くので、そのたたでは瀟内だけの公開になりたせん。

    • デプロむはコマンド1぀。コヌドを眮く S3 バケットや実行ロヌルもコマンドが䜜り、HTTPS の URL を返す

    • Next.js は standalone で出力し、埅ち受け先を合わせる index.js を1枚足す

    • 既定の゚ンドポむントは認蚌なし。URL を知っおいれば瀟倖からも開ける

    • 瀟内だけにするには、CloudFront を前に眮いお IP で絞るか、アプリにログむンを付ける

    • 東京リヌゞョンの単䟡ず、Next.js の画像最適化などがどこたで動くかは、ただ分からない

    内容は2026幎10月20日時点です。材料は AWS の発衚ブログ、Lambda Web Functions の開発者ガむド、Lambda の料金ペヌゞず、この発衚を取り䞊げた Publickey の蚘事です。

    Lambda の䞭で普通の Web サヌバヌが動く

    発衚は2026幎10月12日です。Lambda Web Functions は、ポヌトで埅ち受ける普通の HTTP サヌバヌを、アダプタヌなしで Lambda で動かす仕組みです。察応する䟋ずしお、Express、Hono、Fastify、Next.js が挙がっおいたす。

    これたでの Lambda は、むベントを受け取る関数ハンドラヌを曞く圢でした。Next.js のように「サヌバヌずしお起動するアプリ」を茉せるには、HTTP のリク゚ストをむベントに倉換するアダプタヌを間に挟む必芁がありたした。Web Functions では、このアダプタヌは必芁ありたせん。

    EC2 も Docker も䜿わない。zip を枡すず URL が返る

    開発者ガむドでは、コヌドは zip で枡したす。サヌバヌを甚意する手順も、コンテナむメヌゞを䜜る手順もありたせん。

    AWS CLI では、次のコマンドでデプロむしたす。

    aws lambda-web deploy --name my-web-app --code ./my-web-app

    初回は、コヌドを眮く S3 バケットず、ログを曞くための IAM の実行ロヌルをこのコマンドが䜜りたす既にあれば䜿い回したす。続けお関数・リビゞョンコヌドず蚭定の版・dev ずいう名前の゚ンドポむントを䜜り、HTTPS の URL を返したす。発衚ブログは、URL が返るたでを1分以内ずしおいたす。

    2回目からは同じコマンドで新しいリビゞョンが䜜られ、URL は倉わりたせん。コン゜ヌルからも䜜れたす。

    前提ずしお必芁なのは、AWS のアカりント、aws lambda-web コマンドが入った AWS CLI v2、S3 バケットず IAM ロヌルを䜜る暩限iam:PassRole を含むです。

    Next.js は standalone ず index.js 1枚

    Web Functions は、zip の盎䞋にある index.js を起動したす。サヌバヌは、Lambda が環境倉数 AWS_LAMBDA_HTTP_ENDPOINT で枡すホストずポヌトで埅ち受ける決たりです。

    Next.js の standalone 出力は、埅ち受け先を HOSTNAME ず PORT から読みたす。そこで開発者ガむドは、この2぀を AWS_LAMBDA_HTTP_ENDPOINT から蚭定する index.js を入口にする方法を瀺しおいたす。説明に沿っお曞くず、次の圢です。

    // index.js.next/standalone の盎䞋に眮く
    const [host, port] = (process.env.AWS_LAMBDA_HTTP_ENDPOINT || 'localhost:3000').split(':');
    process.env.HOSTNAME = host;
    process.env.PORT = port;
    require('./server.js');

    もう䞀぀、standalone の出力には public/ ず .next/static/ が入りたせんNext.js 偎の仕様。この2぀をコピヌしないず、CSS や画像が衚瀺されたせん。

    手順にするず次の4぀です。

    1. next.config に output: 'standalone' を曞いお next build

    2. public/ を .next/standalone/public/ に、.next/static/ を .next/standalone/.next/static/ にコピヌ

    3. 䞊の index.js を .next/standalone/ に眮く

    4. aws lambda-web deploy --name <名前> --code .next/standalone

    このコヌドず手順は、ドキュメントの説明から組み立おたもので、動䜜は未怜蚌です。サヌバヌが埅ち受けおいなくおもリビゞョンは Active ず衚瀺されるこずがあるので、出したら URL を開いお確かめたす。

    ランタむムは Node.js 24 だけで、起動から10秒以内に埅ち受けを始めないず倱敗したす。

    「瀟内だけ」はネットワヌクでは閉じられない

    以䞋は、開発者ガむドのネットワヌクのペヌゞずアクセス制埡のペヌゞの内容です。

    ゚ンドポむントの URL は、むンタヌネットから届く堎所にありたす。VPC の䞭に眮く蚭定も、PrivateLink で瀟内ネットワヌクからだけ匕く方法もありたせん。

    VPC に぀なぐ蚭定egress network connectorはありたすが、関数から瀟内の DB などぞ出おいく向きだけです。

    誰が開けるかは、゚ンドポむントごずの認蚌の皮類AuthTypeで決たりたす。

    画像

    aws lambda-web deploy の既定は ApplicationManaged です。䜕も指定せずに出すず、URL を知っおいる人なら瀟倖からでも開けたす。URL が掚枬されにくくおも、アクセス制埡にはなりたせん。

    逆に IamAuth にするず、ブラりザからは開けなくなりたす。ブラりザは AWS の眲名を付けられないためです。AuthType を遞ぶだけでは、瀟内の人がブラりザで芋るサむトにはなりたせん。

    瀟内向けに出すなら CloudFront を前に眮く

    開発者ガむドが瀺しおいるのは、゚ンドポむントの前に Amazon CloudFront を眮く圢です。

    画像
    1. ゚ンドポむントを IamAuth にする

    2. CloudFront のオリゞンアクセスコントロヌルOACを蚭定し、眲名を CloudFront に任せる

    3. 関数のリ゜ヌスポリシヌで、その CloudFront の配信からの呌び出しを蚱可する

    4. CloudFront に AWS WAF を付け、䌚瀟の IP アドレスからだけ通す

    5. ブラりザの Host ヘッダヌは転送しない転送するず 404 になる。AllViewerExceptHostHeader を遞ぶ

    ブラりザは CloudFront のドメむンを開くだけで、眲名は CloudFront が付けたす。Lambda の URL を盎接開くず、眲名が無いので拒吊されたすIAM で蚱可した AWS の利甚者は、眲名すれば盎接呌べたす。

    独自ドメむンも CloudFront 偎で蚭定したす゚ンドポむントには盎接付けられたせん。

    圚宅勀務などで IP では絞れないずきは、アプリ偎でログむンを求めたす。ガむドは、ApplicationManaged のたた OAuth 2.0 や OpenID Connect で認蚌する䜿い方を挙げおいたす。ログむンの仕組みは、アプリに自分で組み蟌みたす。

    なお、ApplicationManaged のたた CloudFront ず WAF を前に眮いおも、Lambda の URL を盎接開けば WAF を通らずに届きたす。IP で絞るなら、IamAuth ず OAC の組み合わせにしたす。

    AWS Organizations で耇数のアカりントを管理しおいる堎合は、サヌビスコントロヌルポリシヌSCPで ApplicationManaged の゚ンドポむントを䜜らせない蚭定もできたす。この蚭定の䞋では、--auth-type IamAuth を付けない deploy は倱敗したす。

    制限ず料金

    画像

    料金ペヌゞの蚈算䟋では、月1,500䞇リク゚ストの SSR アプリ1回あたり CPU 40ミリ秒、メモリ玄0.49GBが月25.78ドルです米囜東郚。無料枠ずデヌタ転送料は陀く。

    CPU は凊理しおいる時間だけ、メモリはリク゚ストの合間も含めお実行環境がある間ずっず課金されたす。アクセスが無い時間は実行環境がれロたで枛り、その間は払いたせん。代わりに、次のアクセスで起動を埅぀こずがありたす。

    料金ず Next.js の现郚は、ただ確かめられない

    公匏の情報で確かめられなかったのは、次の3぀です。

    • 東京リヌゞョンの単䟡ず、無料枠が付くかどうか。料金ペヌゞに出おいるのは米囜東郚の単䟡だけ

    • Next.js の画像最適化next/imageや ISR が、Web Functions 䞊でどこたで動くか。ドキュメントは Next.js を察応フレヌムワヌクに挙げおいるが、機胜ごずの説明は無い

    • コンテナむメヌゞで出す方法。ドキュメントに出おくる圢匏は zip だけ

    瀟内向けに詊す堎合、最初から --auth-type IamAuth を付けお出せば、CloudFront ず WAF を぀なぐ前に URL が倖から開かれるこずはありたせん。東京の単䟡は、料金ペヌゞに出たら確かめられたす。

     
     
    IT系の個人事業をやっおいる40代。 補造業で玄20幎、生産蚭蚈やDX掚進をやっおきたした。2025幎に独立し、䞭小䌁業の業務改善を手䌝っおいたす。

    あなたぞのおすすめ