Google Cloud Functionsを使うにあたって、
AWS Lambdaでよくあるデプロイや管理周りを楽にしてくれるフレームワークを探していました。
そこで、現時点で使えそうな「Serverless Framework」を試してみた記事です。
(個人的にAWSだとChaliceがお気に入りです)
結論としては、できないことがいくつかあり、まだ本格的に使うか悩んでいます。
※この記事は2018/9/2時点に記載しており、それ以降にできることが増えてる可能性があります。
サンプル
npm scriptでserverlessコマンドを色々使えるようにしているので
package.jsonを見るとなんとなくできることがわかるかと思います。
Serverless Frameworkの使い方
Quick Start
利用自体はServerless Framework公式のQuick Startに沿っていけば簡単に開始できます。
- npmで
serverless
をインストール -
serverless create
コマンドでワークスペースを作成 - GCPの
credential
を取得(Service account key
)
※ドキュメントにはOwner権限で作れと書いてますが、Editor権限でも大丈夫でした。 -
serverless.yml
にproject名
とcredential(key.json)
のパスを記載 - あとは
serverless deploy
コマンドでデプロイ
という流れです。
気をつける点
Regionについて
regionの指定については、
-
serverless.yml
のprovider => region
に書く方法 -
deploy
コマンドの--region
オプションに指定する方法
の2つありますが、後者で行う方がよさそうです。
最初、ymlだけにリージョンを書いてみたら、デプロイ後のエンドポイント表示がおかしくなりました。
例:ymlにだけ書いてコマンドのregionオプションを指定しなかった場合。実際は東京リージョンにデプロイされてるのにこのように表示された。
Deployed functions
first
https://us-central1-kj-poc.cloudfunctions.net/http
Function名の変更について
デプロイされるCloud Functionの名前はserverless.yml
に定義しますが、その変更は一度アンデプロイしてからでないとうまくいきませんでした。
ymlの中身だけ変えたら、古い名前のFunctionが消えるだけで終わりました。
具体的には以下のhello
の部分がfunction名になり、変更時にはundeployが必要。
functions:
hello:
handler: helloworld
events:
- http: path
CLIで使えるコマンドについて
serverless help
コマンドでヘルプを参照できますが、Google Cloudではまだ使えないコマンドが結構ありました。(deploy list や deploy functionなど)
使えるコマンドについては公式のGCP向けリファレンスを読んだ方が良さそうです。
試してみて良かった点
デプロイ、アンデプロイが楽
デプロイが簡単なのはもちろんですが、削除も簡単な点が良いです。
自分で考えると結構面倒ですが、しっかり全て消してくれます。
できないこと (できてほしいこと)
使うに踏み切れずにいる、微妙な点です。
Local実行ができない
公式のリファレンスにも記載があり、invoke local
コマンドは用意されているように見えるのですが、動作しませんでした。
こちらにissueもあがっており今はできなさそうと諦めました。
環境変数設定ができない
Cloud Functionに対する環境変数の設定ができません。
新しい機能なので仕方ないのかもしれませんが。
Function単位でのデプロイができない
AWSのCLIリファレンスを見るとできるようなので、要望度は低いですが、できてほしい・・・。
デプロイコマンドを打つ度に全部のアップデートはしたくない時があります。
終わりに
できない点の記載の方が多くなりましたが、とはいえ自分でガリガリとデプロイの
仕組みを書くのもなあという感じで、冒頭にも書きましたが本格的に使うかはまだ悩んでいます。
この記事は自分へのメモ用でもあるので、今後できることが増えないかトレースしてみます。
// または、他におすすめなライブラリ、方法があったら教えていただけると助かります。