✍️
Google Cloud FunctionsでFizzBuzzを作成する
はじめに
近年FaaSが流行しています。
僕も試してみたいと考えていたため、今回FizzBuzz判定APIを作ってみようと思います。
完成品
環境構築
gcloud CLIを使用していますので、インストールしてください。
念のため、その他のバージョン環境。OS:Windows 11
言語処理系:Python 3.10.5
Google Cloud SDK 400.0.0
bq 2.0.75
core 2022.08.26
gcloud-crc32c 1.0.0
gsutil 5.12
関数を作成する
まずFizzBuzz判定用の関数をサクッと書いちゃいましょう。
def CheckFizzBuzz(request):
data = request.args.to_dict()
try:
x = int(data.get('n'))
if x%15==0:
return "FizzBuzz"
elif x%3==0:
return "Fizz"
elif x%5==0:
return "Buzz"
else:
return str(x)
except:
return "ERROR:n is not number"
request.args.to_dict()
でhttpのクエリパラメータを取得できるようです。
注意として、数字のまま返り値にするとエラーを吐くのでそこだけお気を付けください。(動的言語やっているとこういううっかりミスが)
デプロイ
gcloud functions deploy check-fizz-buzz --gen2 --region=asia-northeast1 --runtime=python39 --entry-point=CheckFizzBuzz --trigger-http --allow-unauthenticated
デフォルトだと認証が必要になるため、不特定多数からアクセスできるようにしたい場合--allow-unauthenticated
をつけてデプロイします。
リポジトリだとMakefileでやっていますが、Google Cloud用のビルドランナーがあるのでそちらを使うべきだったかも…。
デプロイが完了すると、デプロイ先のURLが表示されます。
テスト
デプロイ先のURLに書き換え、クエリパラメータをつけて叩いてください。
>curl https://check-fizz-buzz-xxxxxxxxxx-an.a.run.app/CheckFizzBuzz?n=15
FizzBuzz
できましたね!!
終わり
Google Cloud Functionを試すことができました。
Discussion