CDKによるLambdaへのコードデプロイについて
概要
CDKを使ってLambdaにコードをデプロイする際のメモ(nodejs版)
説明
InlineCode版
- ちょっとしたプログラムを手軽にセットする際に便利
- 4096文字の制限があるので大作には向かない
- 第一引数に流し込んだ文字列をindex.jsにしてくれる
- nodejs12.xでは使えない(投稿時の確認では「Inline source not allowed for nodejs12.x」エラーが出る)
import lambda = require('@aws-cdk/aws-lambda'); import fs = require('fs'); new lambda.Function(this, "inlineExample", { ... code: new lambda.InlineCode( fs.readFileSync(`${__dirname}/inline-test/example-inline.js`, {encoding: "utf-8"})), ... });
AssetCode版
- 指定したパス以下をzip圧縮してアップロードしてくれる
- 対象のパスにindex.jsを入れておく必要あり
- index.jsを入れ忘れるとハンドラを定義していても「Runtime.HandlerNotFound: index.handler is undefined or not exported」になる(※index.jsである必要は無いが、ハンドラが別ファイルにある場合はhandlerを正しく設定してあげる必要あり、例えば「lambda/hello.js」に「exports.handler」の記述がある場合はhandlerに「lambda/hello.handler」をセットする)
import lambda = require('@aws-cdk/aws-lambda'); new lambda.Function(this, "assetExample", { ... code: new lambda.AssetCode(`${__dirname}/asset-test`), ... });