はじめに
こんにちは!クラウドインフラの学習捗っていますか?この記事では、Google CloudのCloudFunctionを使用して簡単なアプリをデプロイし、その動作を確認する手順を紹介します。
CloudFunctionとは?
CloudFunctionは、一言で言えば「サーバーレスコンピューティングサービス」です。AWSのLambdaに相当するサービスで、インフラの管理を気にせずにコードを実行することができます。関数(Function)としてコードをアップロードするだけで、自動的にスケーリングし、必要なときだけ実行されます。
コンテナタイプのサーバレスコンピューティングサービスCloud Runはこちらで解説しています。
https://envader.plus/article/413
CloudFunctionの利点
-
インフラ管理不要
サーバーの設定や管理を行う必要がありません。
-
コスト効率
使用した分だけ課金されるため、無駄なコストが発生しません。
-
自動スケーリング
トラフィックに応じて自動的にスケールします。
本記事は、クラウド初心者の方を対象にしています。これから紹介する手順を通じて、CloudFunctionの基本的な使い方を理解し、簡単なアプリケーションをデプロイできるようになりましょう。
前提条件と準備
このセクションでは、CloudFunctionを利用するために必要な前提条件と準備について説明します。以下の手順を実行して、環境を整えましょう。
必要な環境
-
Google Cloudアカウント まずはGoogle Cloudアカウントが必要です。まだ持っていない場合は、Google Cloudの公式サイトから無料アカウントを作成しましょう。Google Cloudアカウントは、Googleが提供するクラウドサービスを利用するための入口です。アカウント作成後にはプロジェクトを作成します。プロジェクトとは、GCP上でリソースを管理する単位で、各リソース(仮想マシン、データベースなど)を一つのプロジェクトに紐付けて管理します。
-
基本的なGCPの知識 Google Cloud Platform(GCP)についての基本的な知識も必要です。GCPは、Googleが提供するクラウドコンピューティングサービスの集合体であり、クラウド上でアプリケーションを構築、デプロイ、運用するためのツールやサービスを提供しています。プロジェクトの作成やAPIの有効化などの基本操作はGCPの基礎となります。
必要なツールのインストール
- gcloud CLIのインストール gcloud CLIは、Google Cloudのリソースを管理するためのコマンドラインツールです。これを使うことで、ブラウザを使用せずにコマンドラインから直接操作することができます。公式ガイドに従ってインストールしてください。
プロジェクトの作成と設定
-
Google Cloudコンソールにログイン
- まずはGoogle Cloudコンソールにアクセスし、Googleアカウントでログインします。ここはGCPの管理画面で、全てのサービスやリソースを操作するためのハブとなります。
-
新しいプロジェクトを作成
- 「プロジェクトの作成」ボタンをクリックし、プロジェクト名を入力して作成します。プロジェクト名はわかりやすい名前にしておくと良いでしょう。このプロジェクト内で全てのGCPリソースを管理します。
-
CloudFunctionの有効化
- 「APIとサービス」 > 「ライブラリ」に移動し、
Cloud Functions API
を検索して有効化します。Cloud Functions APIは、CloudFunctionを利用するために必要なAPIです。同様に、Cloud Build API
も有効化します。Cloud Build APIは、コードのビルドやデプロイを自動化するためのサービスです。
- 「APIとサービス」 > 「ライブラリ」に移動し、
これで、CloudFunctionを使用するための環境が整いました。次に、簡単なアプリケーションを作成していきましょう。
簡単なアプリの作成
このセクションでは、簡単なHello Worldアプリケーションを作成します。CloudFunctionにデプロイするためのコードと設定ファイルを用意しましょう。
アプリケーションコードの作成
まず、作業ディレクトリを作成し、その中にindex.js
ファイルを作成します。
mkdir hello-world
cd hello-world
touch index.js
次に、index.js
ファイルに以下のコードを記述します。このコードは、HTTPリクエストを受け取り、"Hello, World!"というレスポンスを返すシンプルな関数です。さらに、現在時刻も表示します。
exports.helloWorld = (req, res) => {
const currentTime = new Date().toLocaleString();
res.send(`Hello, World! 現在の時刻は: ${currentTime}`);
};
パッケージ設定
package.json
ファイルも作成し、以下の内容を記述します。package.json
はNode.jsプロジェクトのメタデータを保持するファイルで、依存関係などを管理します。
touch package.json
次に、以下の内容をpackage.json
に記述します。
{
"name": "hello-world",
"version": "1.0.0",
"main": "index.js",
"dependencies": {}
}
これで、現在時刻を表示するHello Worldアプリケーションの準備が整いました。次に、このアプリケーションをCloudFunctionにデプロイする手順を説明します。
簡単なアプリの作成 次に、簡単なHello Worldアプリケーションを作成します。
- 作業ディレクトリを作成し、その中に
index.js
ファイルを作成します。mkdir hello-world cd hello-world touch index.js
index.js
ファイルに以下のコードを記述します。exports.helloWorld = (req, res) => { res.send('Hello, World!'); };
package.json
ファイルも作成し、以下の内容を記述します。{ "name": "hello-world", "version": "1.0.0", "main": "index.js", "dependencies": {} }
- ローカルでの動作確認:
- ローカル環境でNode.jsがインストールされていることを確認してください。
node index.js
コマンドで動作確認を行います。
CloudFunctionへのデプロイ
この記事では、作成したアプリケーションをGoogle Cloud Functionにデプロイする手順を説明します。デプロイが完了すると、インターネット経由でアクセスできるURLが生成され、ブラウザからそのURLにアクセスすることで、アプリケーションの動作を確認できます。
gcloud CLIの初期設定
まず、gcloud CLIを使用してGoogle Cloudプロジェクトに認証し、デプロイの準備を行います。
-
gcloud CLIの初期化
gcloud init
コマンドを実行し、プロジェクトを選択します。初めて使用する場合は、指示に従って認証とプロジェクトの選択を行います。
-
プロジェクトの設定確認 プロジェクトが正しく設定されているか確認します。
gcloud config list
例:
[core] project = my-gcp-project
アプリケーションのデプロイ
次に、作成したアプリケーションをGoogle Cloud Functionにデプロイします。デプロイが成功すると、関数が実行可能なURLが生成され、そのURLを使用して関数をテストできます。
-
関数のデプロイ 以下のコマンドを実行して、アプリケーションをデプロイします。
gcloud functions deploy helloWorld \ --runtime nodejs14 \ --trigger-http \ --allow-unauthenticated
--runtime nodejs14
: 使用するランタイム環境を指定します。この場合、Node.js 14を使用します。--trigger-http
: HTTPリクエストをトリガーとして関数を実行します。--allow-unauthenticated
: 認証なしで関数にアクセスできるように設定します。
-
デプロイの確認 デプロイが成功すると、Cloud FunctionのURLが表示されます。このURLを使用して関数をテストすることができます。
関数の動作確認
デプロイした関数が正しく動作するか確認しましょう。
-
ブラウザでアクセス デプロイ時に表示されたURLにブラウザからアクセスします。 例:
https://REGION-PROJECT_ID.cloudfunctions.net/helloWorld
-
レスポンスの確認 ブラウザに「Hello, World! 現在の時刻は: YYYY/MM/DD HH:MM:SS」のメッセージが表示されていることを確認します。
これで、アプリケーションのデプロイと動作確認が完了しました。次に、デプロイ後のトラブルシューティングと注意点について説明します。
トラブルシューティングと注意点
CloudFunctionを利用してアプリケーションをデプロイする際に発生しがちな問題とその対処法について説明します。また、いくつかの注意点も紹介します。
よくあるエラーと対処法
APIが有効になっていない
-
エラー内容
デプロイ時に「APIが有効になっていません」というエラーメッセージが表示される場合があります。
-
対処法
- Google Cloudコンソールにログインします。
- 「APIとサービス」 > 「ライブラリ」に移動し、
Cloud Functions API
を検索して有効化します。 - 同様に、
Cloud Build API
も有効化します。
権限エラー
-
エラー内容
「権限が不足しています」や「アクセスが拒否されました」というエラーメッセージが表示される場合があります。
-
対処法
- Google Cloudコンソールにログインします。
- 「IAMと管理」 > 「IAM」に移動し、適切な権限(例:Cloud Functions開発者ロール)を自分のアカウントに追加します。
デプロイ時のエラー
- エラー内容
デプロイ時に「デプロイに失敗しました」というメッセージが表示される場合があります。
-
対処法
- デプロイコマンドのオプションやパラメータが正しいか確認します。
- プロジェクト設定やリソースの制限(クォータ)を確認します。
注意点
認証設定
CloudFunctionを公開すると、誰でもアクセスできるようになります。セキュリティを考慮し、必要に応じて認証を設定しましょう。認証を設定することで、不正アクセスを防ぐことができます。
コスト管理
CloudFunctionは使用した分だけ課金されるため、無駄なリソースの使用を避けるために、関数の実行回数や使用時間を定期的にモニタリングしましょう。
ログの確認
デプロイ後に関数が正しく動作しているかを確認するために、Google Cloudコンソールの「ログ」機能を活用しましょう。エラーや警告が発生した場合、ログを確認することで原因を特定しやすくなります。
まとめ
この記事では、Google CloudのCloudFunctionを使用して簡単なアプリケーションをデプロイし、その動作を確認する手順を紹介しました。以下に、この記事のポイントをまとめます。
この記事のポイント
-
CloudFunctionの基本概念の理解
- CloudFunctionはサーバーレスコンピューティングサービスであり、インフラの管理を気にせずにコードを実行できることを学びました。AWS Lambdaに相当するサービスであり、関数をアップロードするだけで自動的にスケーリングされます。
-
前提条件と準備の整備
- Google Cloudアカウントの作成、gcloud CLIのインストール、プロジェクトの作成とAPIの有効化といった前提条件を整える方法を紹介しました。
-
簡単なアプリケーションの作成
- "Hello, World!"メッセージと現在時刻を表示するシンプルなアプリケーションをNode.jsで作成し、必要なファイルを準備しました。
-
CloudFunctionへのデプロイ
- gcloud CLIを使ってアプリケーションをCloudFunctionにデプロイし、生成されたURLを使ってブラウザから動作確認を行う手順を示しました。
-
トラブルシューティングと注意点
- よくあるエラーとその対処法、認証設定やコスト管理、ログの確認など、デプロイ後の注意点についても説明しました。
これらのステップを通じて、CloudFunctionを使用したアプリケーションのデプロイと基本的な操作方法を理解できたと思います。この記事を参考に、さらにCloudFunctionを活用したさまざまなアプリケーションの開発に挑戦してみてください。
参考資料
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2024.08.26
Azureサブスクリプションの理解とAWS・Google Cloudの管理単位の違い
この記事は、Azure、AWS、Google Cloudといった主要なクラウドプラットフォームを利用する方々、特にこれからクラウドを導入しようとしている企業のIT担当者やエンジニアを対象にしています。
- AWS
- GCP
- Azure
2024.06.23
簡単ステップで学ぶ!Google CloudRunの基礎とデプロイ方法
この記事では、CloudRunの基本的な概念と機能を理解し、簡単な「Hello World」アプリをデプロイする方法を紹介します。対象読者は、CloudRunやサーバーレスコンピューティングに初めて触れる方です。
- GCP
2024.02.29
データエンジニアになるためProfessional Data Engineer取得はあり?
今回は、そんなProfessional Data Engineerについて解説します。試験概要はもちろん、初学者の方が取得するメリットや勉強方法についても紹介しているので、ぜひ参考にしてください。
- エンジニア
- 資格
- GCP