手順
下の記事にまとまっていた。。やや古いようなので若干追記。
-
npm の環境を作る
mkdir typescript-function cd typescript-function npm init -y
-
typescript とcloud functionsのフレームワークをnpmでインストールする。
npm install @google-cloud/functions-framework npm install --save-dev typescript
-
tsconfig.json
をつくる。src
以下のコードをコンパイルしてdist
以下に書き込むように指定している。{ "compilerOptions": { "target": "es2016", "module": "commonjs", "esModuleInterop": true, "strict": true, "outDir": "dist" }, "include": ["src/**/*"], "exclude": ["node_modules"] }
-
package.json に追記
{ "main": "dist/index.js", "scripts": { "build": "tsc", "start": "functions-framework --target=TypescriptFunction", "prestart": "npm run build", "gcp-build": "npm run build" }, ... }
- main は、コンパイル済みのJavaScript ソースコードを指すようにする。
- "gcp-build" は、デプロイ時に自動的に呼ばれる。
-
.gitignore
を次のように書いて、npmがインストールしたパッケージやビルド済みのコードがgitにアップロードされないようにする。node_modules/ dist/
-
src/index.ts
にコードを書くimport * as ff from '@google-cloud/functions-framework'; ff.http('TypescriptFunction', (req: ff.Request, res: ff.Response) => { res.send('OK'); });
-
デプロイする。この際、deploy の後ろに書いた文字列が関数名になる。同じ関数名だと古いのを書き潰すので注意。
gcloud functions deploy TypescriptFunction \ --gen2 --runtime nodejs16 \ --trigger-http \ --allow-unauthenticated
-
コンソールでデプロイされていることを確認。HTTPトリガの場合は、コンソールでURLを確認。このURLにアクセスすると動作が確認できる。