スポンサーリンク
概要
AWS LambdaでTypescriptを使用したファンクションを作成する方法のメモ。
スポンサーリンク
前提
下記の環境で実施
macOS 10.15.2
VSCode 1.41.1
下記をインストール済とする
node.js (v12.14.0)
yarn (v1.17.3)
スポンサーリンク
手順
下記のディレクトリ構成とする。
1 2 3 4 5 6 |
test_func1 |-src | |- index.ts |-package.json |-tsconfig.json |-build.sh |
1. srcディレクトリ以下にソースコードを格納
2. build.shを使用してLambdaにアップロードするパッケージを作成する
ディレクトリの作成
ディレクトリの作成を行う。
(test_func1の部分は各自で任意の名称を設定。)
1 2 3 |
mkdir test_func1 cd test_func1 mkdir src |
yarn初期化
package.jsonを作成する。
1 2 |
cd test_func1 yarn init |
yarnで必要最低限のモジュールをインストールする。
1 |
yarn add -D typescript @types/node @types/aws-lambda |
Typescript初期化
typescript設定ファイルの作成を行う。
1 |
./node_modules/.bin/tsc --init |
tsconfig.jsonが作成される。
下記のように編集する。
一例なので、設定は目的に応じて変更する事。
1 2 3 4 5 6 7 8 9 10 11 12 |
{ "compilerOptions": { "module": "commonjs", "target": "es6", "declaration": false, "removeComments": true, "sourceMap": false, "outDir": "./dist", "baseUrl": "./src" }, "exclude": ["node_modules"] } |
ビルド用設定
シェルの作成
test_func1フォルダ直下に、build.shを作成し下記のように記載する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#!/bin/sh echo remove dir and zip rm -rf dist/ echo compile ts tsc -p tsconfig.json echo copy package.json cp -f ./package.json ./dist echo install module cd dist yarn install echo zip zip -r dist.zip ./ |
やっている事としては下記
1. 以前のビルド結果の削除
2. Typescriptのビルド
3. ビルド先にpackage.jsonをコピー
4. ビルド先でyarnでnode_moduleのインストール
5. zipファイルを作成
設定
package.jsonに作成したビルド用スクリプトを実行するスクリプトを追加する。
1 2 3 4 5 6 7 |
{ // 略 "scripts": { "build": "sh ./build.sh" }, // 略 } |
以上で準備は終了。
実装とビルド
サンプル用コード
src/index.tsを作成して下記のように記載する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import * as lambda from 'aws-lambda'; export const handler = ( event: any, context: lambda.Context, callback: lambda.Callback ) => { const response = { statusCode: 200, body: JSON.stringify({ message: 'This is a lambda testing' }) }; callback(null, response); }; |
ビルド
yarn run buildコマンドを実行し、dist/dist.zipが作成できれば成功
dist.zipをCLI、コンソール等でアップロードする。