1. はじめに
こんにちは!株式会社Definerの阪本です!
今回は、PythonをCloud functionで使う方法をご紹介したいと思います。
今回は、PythonをCloud functionで使う方法をご紹介したいと思います。
2. 目的・ユースケース
この記事では、サーバレスでPythonを実行するという目的に向けて、Cloud Functionsという技術を活用します。
ITの現場で、GCPを使ってサーバレスなコード実行をしたいときに、参考になる情報やプラクティスをまとめています。
ITの現場で、GCPを使ってサーバレスなコード実行をしたいときに、参考になる情報やプラクティスをまとめています。
3. GCP Cloud Functionsとは
まずは、GCP Cloud Functionsについておさらいします。
Cloud Functionsは、完全にサーバーレスでアプリケーションを実行できるサービスです。
サーバーの構築や保守、負荷対策などの管理が一切不要で、Pythonなどのプログラムを実行することができます。
Cloud FunctionsはFaaS(Functions as a Service)に分類され、コードの記述に集中できます。
AWS Lambdaとの違い
AWS Lambdaとの違いとして、対応言語や最大実行時間、料金などが挙げられます。
・対応言語
Python、Java、GO、Node.jsなどは両方で対応している一方、PowershellやC3はLambdaのみ、PHPはCloud Functionsのみで対応しています。
・最大実行時間
Lambdaは15分、Cloud Functionsは9分です。
・料金
無料枠は、Lambdaが100万回実行まで、Cloud Functionsが200万回実行までです。
100万回あたりのリクエスト料金はLambda$0.2、Cloud Functionsが$0.4である一方、リソース割り当てでの課金は、1GB24時間あたりLambda$1.44、Cloud Functions$0.21となっています。
Cloud Functionsは、完全にサーバーレスでアプリケーションを実行できるサービスです。
サーバーの構築や保守、負荷対策などの管理が一切不要で、Pythonなどのプログラムを実行することができます。
Cloud FunctionsはFaaS(Functions as a Service)に分類され、コードの記述に集中できます。
AWS Lambdaとの違い
AWS Lambdaとの違いとして、対応言語や最大実行時間、料金などが挙げられます。
・対応言語
Python、Java、GO、Node.jsなどは両方で対応している一方、PowershellやC3はLambdaのみ、PHPはCloud Functionsのみで対応しています。
・最大実行時間
Lambdaは15分、Cloud Functionsは9分です。
・料金
無料枠は、Lambdaが100万回実行まで、Cloud Functionsが200万回実行までです。
100万回あたりのリクエスト料金はLambda$0.2、Cloud Functionsが$0.4である一方、リソース割り当てでの課金は、1GB24時間あたりLambda$1.44、Cloud Functions$0.21となっています。
4. Cloud Functionsの作成方法
早速、Cloud FunctionsでPythonを実行していきます。
①GCPへログインし、Cloud Functionsの画面にアクセスします。
②「関数を作成」をクリックし、関数名やリージョンを入力します。
③テスト実行のため、トリガーは「HTTP」で、「未認証の呼び出しを許可」にチェックを入れます。
④「HTTPS必須」のチェックを外し、「次へ」をクリックします。

⑤ランタイム(プログラム言語)を選択します。今回はPython3.9を選択します。
⑥関数のコードに以下を入力し、「デプロイ」をクリックします。
①GCPへログインし、Cloud Functionsの画面にアクセスします。
②「関数を作成」をクリックし、関数名やリージョンを入力します。
③テスト実行のため、トリガーは「HTTP」で、「未認証の呼び出しを許可」にチェックを入れます。
④「HTTPS必須」のチェックを外し、「次へ」をクリックします。

⑤ランタイム(プログラム言語)を選択します。今回はPython3.9を選択します。
⑥関数のコードに以下を入力し、「デプロイ」をクリックします。
def hello_world(request):
request_json = request.get_json()
if request.args and 'message' in request.args:
return request.args.get('message')
elif request_json and 'message' in request_json:
return request_json['message']
else:
return f'Hello World!'
最後に、実行できるかを確認します。
⑦Cloud Functions関数の詳細をクリックし、「トリガー」
⑧表示されているURLをクリック
Hello Worldが表示されることが確認できました!

5. 引用・参考記事
6. 独自ソリューション「PrismScaler」について
7. お問合せ
本記事では、入門編として有益な情報を無料公開しています。ご相談やお問い合わせは「株式会社Definer」へ。
8. Definerに関して。
・ Definer Incは、ITの上流から下流まで一気通貫のワンストップソリューションをご提供しております。
・ AIやクラウドのITインフラなど、先進的なIT技術のコンサルティングから要件定義 / 設計開発 / 実装、保守運用に至るまでの統合的な支援にコミットしています。
・ DevOpsとCI/CDコンサルティングにより「少ないエンジニアで事業が成長する仕組みづくり」「エンジニアが喜ぶ、採用しやすい環境づくり」「高速なアジャイル開発環境」を実現しています。
・ また、自社プロダクトとしてPrismScalerを展開しております。PrismScalerは、AWS、Azure、GCPなどのマルチクラウド / ITインフラの高品質かつ迅速な、「自動構築」「自動監視」「問題検知」「構成可視化」を実現します。
・ AIやクラウドのITインフラなど、先進的なIT技術のコンサルティングから要件定義 / 設計開発 / 実装、保守運用に至るまでの統合的な支援にコミットしています。
・ DevOpsとCI/CDコンサルティングにより「少ないエンジニアで事業が成長する仕組みづくり」「エンジニアが喜ぶ、採用しやすい環境づくり」「高速なアジャイル開発環境」を実現しています。
・ また、自社プロダクトとしてPrismScalerを展開しております。PrismScalerは、AWS、Azure、GCPなどのマルチクラウド / ITインフラの高品質かつ迅速な、「自動構築」「自動監視」「問題検知」「構成可視化」を実現します。