ソースコードから理解する技術-UnderSourceCode

手を動かす(プログラムを組む)ことで技術を理解するブログ

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"]

参考サイトは
Cannot find name 'AsyncIterator' error in Typescript compilation process. · Issue #83 · apollographql/graphql-subscriptions · GitHub


上記を追加した後でデプロイ。

$ ./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