aobako.net
GCP Cloud Functions を使ってみる
February 21, 2019
普段は AWS を利用していますが、GCP を触る機会がてできそうなので、少しずつ覚えていこうと思います。まずは理解が簡単そうな Cloud Functions
から触ってみます。
Cloud Functions はサーバーレスなプログラム実行環境です。コンピューティングリソースおよび欄タムは GCP か管理してくれるので、利用者は中身のコードのみに集中することができます。AWS にも、AWS Lambda
という同様のサービスがあります。
実行可能なランタイム
2019/2/21 時点では、次のランタイムが使用可能でした。
- Go 1.11
- Node.js 6
- Node.js 8
- Python 3.7
ランタイム自体は AWS Lambda の方が多いようです。ただし、Cloud Functions ではパッケージマネージャの機能が利用できるので、依存モジュールの管理/パッケージングがすごく楽だと感じました。
サンプル
ためしに、pyjokes
モジュールに依存する簡単な python プログラムをデプロイしてみようと思います。
- main.py
# !/usr/bin/env python3
import pyjokes
def get_joke(request):
joke = pyjokes.get_joke()
return f'joke: {joke}'
if __name__ == '__main__':
print(get_joke(None, None))
- requirements.txt
-i https://pypi.org/simple
pyjokes==0.5.0
デプロイ
今回はお試し版なので、管理コンソールからさくっとデプロイしてみます。まず最初にデプロイパッケージを作成しましょう。
デプロイパッケージの作成
パッケージは zip 形式にする必要があります。
$ zip deploy main.py requirements.txt
デプロイ
特にこだわりがなければ、画像を参考に適当に入れてしまいましょう。
ファンクションを実行
デプロイが完了したらテストしてみます。ブラウザまたは curl 等でファンクションの URL を叩いてみましょう。ちゃんとデプロイできていれば、pyjokes が出力したメッセージが返ってきます。なお、ファンクションの URL は、関数のトリガータブに表示されています。
感想
簡単にクラウド上でコードが実行できる本サービスですが、何よりもパッケージマネージャが使えることが素晴らしいです。自分で依存モジュールをかき集める煩わしさから開放されるので、とてもデベロッパフレンドリなサービスだと感じました。
蛇足
近いうちにブログを WordPress から Hexo もしくは Gatsby に移そうと裏で奮闘中。