Closed14

Serverless Frameworkやっていき

もっくま(Mistletoe)もっくま(Mistletoe)

Serverless Framework普段使ってるけど、 https://www.serverless.com で用意されているコンソール周り使ったことないので、触ってみる。
うまく使うとロギングとか監視とかNoConfigで色々できるかもなので、ザクッとものを作りたいときに、運用面での負荷とかを減らせそう。

Serverless Frameworkもっと流行ってほしいので書き起こそう。

もっくま(Mistletoe)もっくま(Mistletoe)


何でもいいけど「node Express.js API」を選択。
API-GatewayとLambdaのREST-API環境のテンプレートを展開してくれる。

個別自分で用意したServerlessFrameworkプロジェクトも追加することができそう。

もっくま(Mistletoe)もっくま(Mistletoe)

適当に名前つけてcreateすると、コマンドを使ってaws上にリソースをデプロイするコマンドが提示されるのでCLIで実行。

↓こんな感じ

serverless \
    --org=[~~~] \
    --app=aws-node-express-api \
    --name=aws-node-express-api \
    --template=aws-node-express-api
もっくま(Mistletoe)もっくま(Mistletoe)

リソースをデプロイするかを聞かれ「Y」を入力するとAWSへのデプロイまで行い、APIが作成される。
以下みたいなログが出ればok

Creating a new serverless project


✔ Project successfully created in aws-node-express-api folder


✔ Your project has been setup with org "~~~~~~" and app "aws-node-express-api"

? Do you want to deploy your project? Yes

Deploying aws-node-express-api to stage dev (us-east-1)

✔ Service deployed to stack aws-node-express-api-dev (152s)

dashboard: https://app.serverless.com/~~~~~/apps/aws-node-express-api/aws-node-express-api/dev/us-east-1
endpoint: ANY - https://~~~~~~~~~~.execute-api.us-east-1.amazonaws.com
functions:
  api: aws-node-express-api-dev-api (975 kB)

What next?
Run these commands in the project directory:

serverless deploy    Deploy changes
serverless info      View deployed endpoints and resources
serverless invoke    Invoke deployed functions
serverless --help    Discover more commands

endpointのURLにアクセスすると {"message": "Hello from root!"} のJSONが返ってくる。

もっくま(Mistletoe)もっくま(Mistletoe)

dashboardのURLに行くとダッシュボードが用意されていて、アクセス状況が確認できる。

↓こんな感じ

細かい統計情報が取れたり

アラートとかも挙げられるのかな?

もっくま(Mistletoe)もっくま(Mistletoe)

アラートが気になるので使えるかやってみる。

handler.jsに以下のエラーになるendpointを追加。

app.get("/error", (req, res, next) => {
  throw new Error("Got some Error!");
});

serverless deploy で修正を反映できる

エラーにはなってるっぽいけど、特にアラートに上がらないな…timeoutとかだとうまく通知されるのかな。

もっくま(Mistletoe)もっくま(Mistletoe)

LambdaのFunctionInvokeErrorとして認識出来てない感じ
どうもAPI-Gatewayとの組み合わせでちゃんと設定しないとErrorをラップしたような感じになってるっぽい。
別のServerlessFrameworkプロジェクト「node starter」でエラーを起こしたところ、ちゃんとエラーとして計算された。

が、alertのところはそれをしても反応がなかった…
そんなに変なことしてない気がするので、何か別の用途なのかな…

もっくま(Mistletoe)もっくま(Mistletoe)

やっぱりexpressでラップしてると検知できないっぽいなー
カスタム難しそうだし諦めたほうがいいかも

このスクラップは2023/12/03にクローズされました