はじめに
この記事はむちゃぶりにも応える開発技術があるって?!〜3つのテーマで記事を募集〜 by V-CUBEのカレンダー の参加記事です。
Serverless Cloud FunctionはAWSでいうLambdaのようなサービスです。
AWSのLambdaの代替となるツールとして、Tencent CloudにはServerless Cloud Functionがあると知ったので、試してみることにしました。
今回はHTTPリクエストをトリガーとしてレスポンスを行うJSのアプリケーションをデプロイしてみました。
ドキュメントもありますが、補足が欲しいところもあったので、記事にしています。
デプロイにはServerless Frameworkも使うことができます。
今回はまずは検証をしたいため、とにかく手動でデプロイして使ってみます。
Serverless Frameworkを使う場合はこちらが参考になります。
- Deploying Framework on Command Line | Tencent Cloud
- Tencent Cloud - Serverless Cloud Function (SCF) Guide - Introduction | Serverless Framework
料金について
無料枠が存在するので、お試しであれば無料でできます。
Calculatorもあるので、実際に稼働させる際にはこちらで試算をします。
コンソールで設定をしていく
設定に関して参考にしたDocumentはこちらです。
Serverless Cloud Functionを有効化する
Serverless Cloud Functionのコンソールを開きます。
初めての場合は有効化を求められるので許可をします。
早速リージョンを選択して Create していきます。
ちなみに2023年12月現在、リージョンは以下のものが選択できます。
フレームワーク等を選択して手軽に作成できるTemplatも用意されているのですが、使おうとしたサンプルは、runtimeがNodejs.12.16
と古かったので「Create from scratch」を選択しました。
Serverless Cloud Functionの起動トリガーは以下の2つから選択できますが、今回は「HTTP-triggerd Function」を選択します。
アプリケーションの設定
アプリケーションのデプロイ(アップロード)前にやることが2つあります。
-
scf_bootstrap
というファイルを作成する - listenするポートを
0.0.0.0:9000
に変更する
Node.jsのruntimeは最新が18.15だったので、これを選択しています。 (v20は選択肢になかった...)
scf_bootstrap
には以下のように記述します。
#!/bin/bash
SERVERLESS=1 /var/lang/node18/bin/node ./dist/main.js
今回デプロイしたアプリケーションはNestJSなので、ビルド後、アップロードします。
npm run build
ファイルのアップロードをする
以下のように設定をします。
完了前に、以下のようなエラーが表示されていたので、 ApiGateWay_QCSRole
のパーミッションを許可します。
こういう細かいところまで、許可が必要なのですが、初めのうちは「知らないうちに使っていた」とならないのでいいなと思いました。
Service role error. Please assign ApiGateWay_QCSRole the permission to invoke the cloud function.
最後にfunction URLを公開すればAPIが公開できます。
API Gatewayの設定をせずにここまでできるのは便利です。
まとめ
- APIの公開までにAPI Gatewayの設定を意識せずにできるのは便利でした
- Node.jsのランタイムや、Templateが古いのは不便でした
参考