✍️

Google Cloud FunctionsでFizzBuzzを作成する

2022/10/20に公開

はじめに

近年FaaSが流行しています。
僕も試してみたいと考えていたため、今回FizzBuzz判定APIを作ってみようと思います。

完成品

https://github.com/PenguinCabinet/FizzBuzz_Google_Cloud_Functions

環境構築

gcloud CLIを使用していますので、インストールしてください。
https://cloud.google.com/sdk/docs/install?hl=ja
念のため、その他のバージョン環境。

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