Open1
Lambdaのローカル実行で処理が途中で終わってしまう現象 [M1 mac, typescript, esbuild, sam, cloudformation]
現象
Lambdaの処理中に外部APIを叩いてもレスポンスがなく途中で処理が終了してしまう
調べた時に同じ現象に直面している人がいなかったため、参考になればと思い、スクラップを残しておきます
下記のような状況の人はこの方法でなおる可能性があります
- sam local invokeでローカル起動時にこの現象になる
- ローカル実行時のみ
- esbuildを使っている
- M1 macを使っている。M1でのみ確認できる現象。(Intel Macは問題なし)
構成
- Node
- Typescript
- esbuild
- Lambda
- Cloudformation
- Sam
解決方法
typescript
のトランスパイル設定にあるsourcemap
をFalseにする
こちらはAWSのデベロッパーガイドからサンプルを拝借しています (サンプルではtrueになっている。)
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: hello-world/
Handler: app.handler
Runtime: nodejs14.x
Architectures:
- x86_64
Events:
HelloWorld:
Type: Api
Properties:
Path: /hello
Method: get
Environment:
Variables:
NODE_OPTIONS: --enable-source-maps
Metadata:
BuildMethod: esbuild
BuildProperties:
Format: esm
Minify: false
OutExtension:
- .js=.mjs
Target: "es2020"
Sourcemap: true <-- これをfalseまたは削除(デフォルト値はfalseのため)
EntryPoints:
- app.ts
External:
- "<package-to-exclude>"
AWS デベロッパーガイド:esbuild による Node.js Lambda関数の構築
今度時間があった時に原因を調査してみます。