created: 2019-08-04T04:16:56.000Z

TypescriptでLambdaのハンドラーを書いてbashでアップロードする

普通だとlambdaのアップロードはserverlessなどフレームワークを使うが、package.jsonを別に作りたくない場合があり、デプロイをシェルスクリプトでやったのでメモ

#!/bin/bash
set -eu
cd $(dirname $0)

$(npm bin)/tsc --build --clean && $(npm bin)/tsc --build

zip -qr ~/Desktop/lambda.zip \
  ./index.js \
  $(find ./src -name '*.js' -o -name '*.js.map' -type f) \
  ./node_modules

aws lambda update-function-code \
  --function-name MyLambda \
  --zip-file fileb://~/Desktop/lambda.zip
  • ./node_modules 配下のdevDepsがzipに入り込んでしまうのが微妙
  • zipファイルが10MB以上の場合はs3デプロイが推奨されている
    • ロールバックとかを考えると、本当はs3デプロイのほうがよいようだ