Help us understand the problem. What is going on with this article?

Google Cloud Functions を Serverless Framework で使う

Google Cloud Functionsを使うにあたって、
AWS Lambdaでよくあるデプロイや管理周りを楽にしてくれるフレームワークを探していました。
そこで、現時点で使えそうな「Serverless Framework」を試してみた記事です。
(個人的にAWSだとChaliceがお気に入りです)

結論としては、できないことがいくつかあり、まだ本格的に使うか悩んでいます。

※この記事は2018/9/2時点に記載しており、それ以降にできることが増えてる可能性があります。

サンプル

https://github.com/suzukenz/sandbox/tree/master/cloud-function-sls-trial

npm scriptでserverlessコマンドを色々使えるようにしているので
package.jsonを見るとなんとなくできることがわかるかと思います。

Serverless Frameworkの使い方

Quick Start

利用自体はServerless Framework公式のQuick Startに沿っていけば簡単に開始できます。

  1. npmでserverlessをインストール
  2. serverless createコマンドでワークスペースを作成
  3. GCPのcredentialを取得(Service account key)
    ※ドキュメントにはOwner権限で作れと書いてますが、Editor権限でも大丈夫でした。
  4. serverless.ymlproject名credential(key.json)のパスを記載
  5. あとはserverless deployコマンドでデプロイ

という流れです。

気をつける点

Regionについて

regionの指定については、

  1. serverless.ymlの provider => regionに書く方法
  2. 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リファレンスを見るとできるようなので、要望度は低いですが、できてほしい・・・。
デプロイコマンドを打つ度に全部のアップデートはしたくない時があります。

終わりに

できない点の記載の方が多くなりましたが、とはいえ自分でガリガリとデプロイの
仕組みを書くのもなあという感じで、冒頭にも書きましたが本格的に使うかはまだ悩んでいます。

この記事は自分へのメモ用でもあるので、今後できることが増えないかトレースしてみます。

// または、他におすすめなライブラリ、方法があったら教えていただけると助かります。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした