新しいことにはウェルカム

技術 | 電子工作 | ガジェット | ゲーム のメモ書き

AWS Amplify のLambda FunctionをTypeScriptで書く方法

AWS AmplifyでLambda Functionを追加すると、JavaScriptで雛形が生成されるので、それをTypeScriptにする方法メモです。

下記ドキュメントを参考にしました。

手順

Functionを追加すると、下記のフォルダが生成されるので、その中で作業します。

amplify/backend/function/[function_name]

TypeScriptプログラム

tsフォルダを作成して、そこにTypeScriptで書かれたプログラムを置く。

mkdir ts
touch ts/index.ts

tsconfig.json

tsconfig.jsonを作成する

{
    "compilerOptions": {
        "allowSyntheticDefaultImports": true,
        "lib": [
            "dom",
            "esnext"
        ],
        "module": "commonjs",
        "moduleResolution": "node",
        "skipLibCheck": true,
        "resolveJsonModule": true,
        "outDir": "./src",
        "baseUrl": "./",
        "rootDir": "./ts",
        "paths": {
            "src": [
                "./ts"
            ]
        }
    }
}

package.json

package.jsonを作成する(scriptsを抜粋)

{
  "scripts": {
    "build": "tsc && cp package.json src/ && cd src && rm -f package-lock.json && npm install --production && npm prune --production && rm -f package.json && rm -f package-lock.json"
  }
}

更新作業

ビルド

関数のフォルダで実行

npm run build

テスト

amplify mock function [function_name]

デプロイ

amplify push

補足説明

要は、srcフォルダにあるファイル・フォルダはLambdaにアップされるので、srcフォルダにDependenciesのモジュールのみをインストールしておきます。

ただ、srcフォルダにpackage.jsonがあると、mockやpushの際に、devDependenciesのモジュールもインストールされてしまうので、モジュールのインストールが終わったらpackage.jsonファイルは削除しておきます。

感想など

今までLambdaはServerless Frameworkを使って作成していたのですが、AWS Amplifyを使う時は、AWS Amplifyに寄せてしまおうと奮闘中です。

関連カテゴリー(AWS)記事

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com