4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

開志専門職大学情報学部Advent Calendar 2023

Day 14

Cloud Functionsを使ってAPIをデプロイする

Last updated at Posted at 2023-11-30

はじめに

PythonスクリプトをCloud Functions上にAPIとしてデプロイする手順を紹介します。

簡易な処理だけどインフラを整えるのが面倒くさい!
という場合に素早く手軽にデプロイできるのが魅力です。

Cloud Functionsについて

Cloud Functions は Google Cloud によって提供される FaaS (Function as a Service) です。サーバやコンテナといったインフラを意識することなく、手軽にクラウド上でのコード実行することができます。独自のサービスを HTTP API 経由で公開することはもちろん、特定のイベントをトリガーとして起動したり、クローラとして定期実行したりすることも可能です。

公式ドキュメントでもいくつかユースケースが紹介されているので、興味のある方はご確認ください。

利用料金について

Cloud Functions を含む Google Cloud では従量課金制が採用されています。
月毎の無料枠は以下の通りです。

  • vCPU : 180,000 vCPU 秒
  • メモリ : 360,000 GiB 秒
  • リクエスト : 200 万リクエスト

無料枠を使い切ったのち、関数の構成と利用状況に応じた課金となります。
Cloud Functions の料金形態は公式ドキュメントに詳しく記載されているので、確認することをオススメします。

また、ユースケースを記入すると月毎の利用料金を計算・表示してくれる料金計算ツールも用意されています。
来月の請求が怖い!という方は積極的に利用しましょう。

Cloud Functionsの利用手順

1.Cloud Functions のページを開く

ナビゲーションメニューから [Cloud Functions] ボタンを選択
console

2.関数を作成する

[ファンクションを作成] を選択
create-function

API の有効化を要求されたら [有効にする] をクリック
enable-api-1

3.関数の構成を設定する

[関数名], [リージョン] を任意のものに設定。
認証については [未認証の呼び出しを許可] を選択。
propaty

同様に API の有効化を許可
enable-api-2

※今回は本質部分でないため割愛するものの、認証を必要とすることで特定のアプリケーションやプロジェクトからの呼び出しに限定することも可能

4.関数のコードを記述

本記事では Python 3.12.0 を選択。
コードを記述し終えたらデプロイをクリック。
edit-function

5.関数をテストする

[トリガー] タブから [トリガーURL] のリンクにアクセス
test-function

実行結果
result

無事関数を実行させることができました。

まとめ

チュートリアルを読みながら30分程度で Cloud Functions 上に API をデプロイすることができました。
開発初心者にもおすすめできるほどお手軽なのにも関わらず、他のサービスとの連携性も高いと感じました。月毎に 200 万リクエストまで無料なので、小規模のプロジェクトであればコスパ良く利用できそうです。

参考文献

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?