maikeru666
@maikeru666

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

AWSのLambdaにてexpressのコードが実行出来ません。

AWSのLambdaにてzipのコードが実行出来ません。

ec2の上にたてたlinuxで作成したexpressのコードをzipで固めてs3においてからlambdaに登録したのですが、実行できない状況です。

expressのライブラリも一緒にzipで固めて登録しているはずなのですが、、

lambdaの環境はnode.jsで構築しています。

APIgatewayをトリガーにしてlambdaを発動させるようにしているのですが、APIgatewayの設定画面からURLをクリックしてもexpressのコード通りに画面が表示されません。

expressのコードが悪いのでしょうか、そもそもlambdaにトリガーが届いていないのでしょうか。

ブラウザ上でのメッセージ

{"message":"Not Found"}

expressコード例

const serverlessExpress = require('@vendia/serverless-express')
const app = require('express')()

app.use('/', (req, res) => res.send(`root`));
app.use('/hello', (req, res) => res.send(`hello`));

// ローカル確認用
if (process.env.NODE_ENV === `develop`) app.listen(3000)

exports.handler = serverlessExpress({ app })

スクリーンショット (15).png

expressコード例(apiを使わずにlambdaのみでテストをしてみた時のコード)

// packages/server/src/index.ts

import serverlessExpress from '@vendia/serverless-express'
import express from 'express'
import cors from 'cors'

const app = express()
app.use(cors())
app.use(express.json())

app.get('/test', (_, res) => {
  res.status(200).send({
    message: 'serverlessExpress test',
  })
})

export const handler = serverlessExpress({ app })

APIgatewayをかませていなくても、expressのライブラリごとまとめたzipのコードがlambdaで実行出来ません(テストを押しても実行失敗になります。):point_up:

0

1Answer

Lambdaの「request・response」は、web開発の「request・response」と大きく違います。sessionとcookieもつかえません。既存のWEB開発のモジュールと書き方を利用すると挫折します。lambdaはバッチ処理に適切です。強いてRestAPIまでです。

つまり使い方はまちがっているでしょうと思います。

※自分もLambdaでjavaのwebアプリを動かす試験を探ったことがありますが、結論は無理です。

0Like

Comments

  1. @maikeru666

    Questioner

    ご回答誠にありがとうございます。
    現在の方向性としてDBからとってくる所だけlambdaの上のexpressを使ってみよう、という試みの中であります。
    https://qiita.com/Michinosuke/items/879cfe47ca1aeae2c084
    こちらのサイトのように行ってもうまくいかないのですが、何故でしょうか。

  2. なるほど。api gateway で http api のバックエンドの選択ができることか。勉強になりました。ありがとうございます。いつか試してみます。

Your answer might help someone💌