Serverless Framework + TypeScriptでAPI Gatewayを作成する
タイトルにあるように、Severless FrameworkとTypeScriptでAPI Gatewayを使ったAPIを作成する手順になります。
HTTPのリクエストはAPI Gatewayが受けて、裏の処理を行うLambdaをTypeScriptで書く形となります。
以下、手順です。
なお、Serverless Frameworkを作業するローカルフォルダにインストールしたため、通常のServerless Frameworkの使い方とは異なっています。
グローバル領域にServerless Frameworkをインストールする場合は、Serverless Frameworkを実行するコマンドを適時置き換えてください。
作成手順
Serverless Frameworkのインストール
$ npm install serverless $ ./node_modules/.bin/serverless --version 1.24.1
テンプレート作成
$ ./node_modules/.bin/serverless create -t aws-nodejs-typescript
package.jsonにServerless Frameworkを追記。
(これを行わなと次のコマンドでローカルにインストールしたServerless Frameworkが消えるため)
(グローバル領域にServerless Frameworkをインストールする場合は不要)
package.jsonに記載されたライブラリをインストール。
$ npm install
serverless.ymlの編集
(この手順はお好みの値で。やらなくてもOK。)providerに以下を追加。
provider: (中略 ここはデフォルト) stage: dev region: ap-northeast-1 profile: default
デプロイ
デプロイしようとすると以下のエラーが発生する。
Cannot find name 'AsyncIterator'.
tsconfig.jsonのcompilerOptionsに以下を追加する。
"lib": ["es6", "dom", "esnext"]
上記を追加した後でデプロイ。
$ ./node_modules/.bin/serverless deploy
デプロイできたら、curlなどでGETできることを確認してください。
$ curl https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/dev/hello "message":"Go Serverless Webpack (Typescript) v1.0! Your function executed successfully!"(以降略)
今回作成したもの
今回作成したものは以下になります。
GitHub - SrcHndWng/aws-nodejs-typescript-sample
参考サイト
Getting Started With Serverless and TypeScript
Serverless Framework Commands - AWS Lambda - Create
Serverless Framework - AWS Lambda Guide - Serverless.yml Reference
Cannot find name 'AsyncIterator' error in Typescript compilation process. · Issue #83 · apollographql/graphql-subscriptions · GitHub
npmでnode.jsのpackageを管理する - Qiita