このチュートリアルは、Google Cloud の導入において主なアプリ開発のコンセプトを学習するエンジニアやウェブ デベロッパーなど、クラウドにアプリをビルドするのが初めての人を対象にしています。
目標
- Google Cloud Console や
gcloud
などの Google Cloud の基本的なツールについて学習します。 - アプリを App Engine スタンダード環境にデプロイします。
- Firestore でデータを保存します。
- Cloud Storage にアップロードしたファイルを保存します。
- Google Cloud のオペレーション スイートを使用してアプリをモニタリングします。
費用
このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。
このドキュメントの手順は、リソース使用量が Google Cloud の無料枠ティアの制限内に収まるように設計されています。 料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Firestore データベースをネイティブ モードで作成するには、次の手順に沿って操作してください。
-
Cloud Console の Firestore Viewer ページに移動します。
Firestore Viewer に移動 - [Cloud Firestore モードの選択] 画面から [ネイティブ モードを選択] をクリックします。
- Firestore データベースのロケーションを選択します。このロケーション設定は、Cloud プロジェクトのデフォルトの Google Cloud リソースのロケーションです。このロケーションは、ロケーション設定を必要とする Cloud プロジェクト内の Google Cloud サービス(特にデフォルトの Cloud Storage バケットおよび App Engine アプリ)で使用されます。
- [データベースを作成] をクリックします。
-
Cloud Console の Firestore Viewer ページに移動します。
-
Enable the App Engine Admin, Cloud Storage, Cloud Logging, and Error Reporting APIs.
-
サンプル リポジトリのクローンを作成して、Cloud Shell でサンプル アプリケーションを開きます。
Cloud Shell に移動Cloud Shell を使用すると、ブラウザからコマンドラインで直接 Google Cloud リソースにアクセスできます。
- サンプルコードをダウンロードしてアプリのディレクトリに移動するには、[続行] をクリックします。
-
Cloud Shell で、
gcloud
ツールを構成して新しい Google Cloud プロジェクトを使用します。# Configure gcloud for your project gcloud config set project PROJECT_ID
PROJECT_ID は、Cloud Console を使用して作成した Google Cloud プロジェクト ID に置き換えます。
Google Cloud CLI は、コマンドラインから Google Cloud リソースを操作する基本的な方法です。このチュートリアルでは、
gcloud
ツールを使用してアプリをデプロイおよびモニタリングします。
アプリを実行する
- Cloud Shell で、
pip
を使用してアプリの依存関係をインストールします。pip3 install -r requirements.txt --user
-
Gunicorn HTTP サーバーをインストールします。
pip3 install gunicorn --user
-
Gunicorn HTTP サーバーを実行します。
~/.local/bin/gunicorn -b :8080 main:app
- Cloud Shell で、[ウェブでプレビュー] をクリックし、[ポート 8080 でプレビュー] を選択します。新しいウィンドウが開き、実行中のアプリが表示されます。
アプリを App Engine にデプロイする
Google Cloud には、コードを実行する際に使用できるオプションがいくつか用意されています。この例では、App Engine を使用してスケーラブルなアプリを Google Cloud にデプロイします。App Engine では、開発環境の構成もサーバーの管理も不要なため、コーディングに集中できます。また、トラフィック量が急増した場合も App Engine が自動的にスケーリングしてサポートします。
app.yaml
ファイルは App Engine にデプロイするメインの構成ファイルです。
- ターミナル ウィンドウで、gcloud CLI を使用してアプリを App Engine にデプロイします。
# on the command-line gcloud app deploy
- ウェブブラウザに次のアドレスを入力します。
https://PROJECT_ID.REGION_ID.r.appspot.com
以下を置き換えます。
PROJECT_ID
: Google Cloud プロジェクト IDREGION_ID
: App Engine によってアプリに割り当てられたコード
App Engine へのデプロイの詳細については、Python 3 ランタイム環境をご覧ください。
Firestore でデータを永続化する
App Engine インスタンスに情報を保存することはできません。これは、インスタンスの再起動時に情報が失われ、新しいインスタンスの作成時にはすでに存在しないためです。そこで、すべてのインスタンスが読み取りおよび書き込みするデータベースを使用します。
Google Cloud にはデータを保存する際に使用できるオプションがいくつか用意されています。この例では、Firestore を使用して各書籍のデータを保存します。Firestore はフルマネージドでサーバーレスの NoSQL ドキュメント データベースで、データを保存および照会できます。Firestore はアプリのニーズを満たすために自動でスケールし、使用しない場合はゼロにスケールします。最初の書籍を追加しましょう。
- ウェブブラウザに次のアドレスを入力します。
https://PROJECT_ID.REGION_ID.r.appspot.com
以下を置き換えます。
PROJECT_ID
: Google Cloud プロジェクト IDREGION_ID
: App Engine によってアプリに割り当てられたコード
-
デプロイしたアプリ用の書籍を作成するには、[Add book] をクリックします。
- [Title] 項目に「
Moby Dick
」と入力します。 - [Author] 項目に「
Herman Melville
」と入力します。 -
[Save] をクリックします。Bookshelf アプリにエントリが追加されました。
- Cloud Console で Firestore ページを更新するには、[更新] refreshをクリックします。データが Firestore に表示されます。Bookshelf アプリでは、各書籍が一意の ID とともに Firestore ドキュメントとして、すべて Firestore コレクション内に保存されます。このチュートリアルでは、コレクションを書籍集(books)と呼びます。
Firestore は Firestore クライアント ライブラリを使用して書籍集を保存します。Firestore ドキュメントを取得する例を次に示します。
Firestore の使用方法の詳細については、Firestore にデータを追加するをご覧ください。
Cloud Storage にアップロードしたファイルを保存する
書籍を追加したので、書籍の表紙の画像を追加します。ファイルをインスタンスに保存することはできず、データベースは画像ファイルに適していません。そこで Cloud Storage を使用します。
Cloud Storage は Google Cloud 向けのメインの blob ストアです。Cloud Storage を使用して、Google Cloud で共有するアプリのアセットをホストできます。Cloud Storage を使用するには、データを保存する基本的なコンテナである Cloud Storage バケットを作成する必要があります。
- Cloud Console の Cloud Storage ブラウザページに移動します。
- [バケットを作成] をクリックします。
- [バケットの作成] ダイアログで、Google Cloud のプロジェクト ID を文字列
_bucket
に付け加えてバケットの名前を入力して、名前をYOUR_PROJECT_ID_bucket
のようにします。この名前はバケット名の要件を満たしている必要があります。他のすべての項目はデフォルト値のままにします。 - [作成] をクリックします。
- バケットの作成後、ユーザーが閲覧できるようにオブジェクトを一般公開する必要があります。オブジェクトを一般公開するには、データの一般公開をご覧ください。
-
[Edit book] をクリックして、書籍の表紙としてアップロードする画像を選択します。たとえば、このパブリック ドメインの画像を使用します。
-
[Save] をクリックします。Bookshelf アプリのエントリがあるホームページにリダイレクトされます。
Bookshelf アプリは、Cloud Storage クライアント ライブラリを使用して、アップロードされたファイルを Cloud Storage に送信します。
Cloud Storage の使用方法の詳細については、入門ガイドのリストをご覧ください。
Google Cloud のオペレーション スイートを使用してアプリをモニタリングする
アプリをデプロイし、書籍を作成して変更を加えました。ユーザーのためにこのようなイベントをモニタリングするには、アプリケーション パフォーマンス管理を使用します。
Cloud Logging でログをモニタリングする
Cloud コンソール
-
ブラウザで、アプリの
/logs
URL にアクセスします。https://PROJECT_ID.REGION_ID.r.appspot.com/logs
これにより、Cloud Logging にカスタムのエントリが送信されます。エンティティには、
NOTICE
のログの重大度と、「Hey, you triggered a custom log entry. Good job!」というメッセージが含まれます。 -
アプリをリアルタイムでモニタリングできるログビューアに移動します。これは、問題が発生した場合に、最初に確認すべき場所です。
- [リソース] プルダウン リストで、
GAE Application
を選択します。 - [ログ] プルダウン リストで、[すべてのログ] を選択します。
カスタムのログエントリ用の行があります。
gcloud
-
ターミナル ウィンドウで、Google Cloud CLI を使用して新しいログエントリをリッスンし、アプリのログをモニタリングします。
gcloud app logs tail
-
ブラウザで、アプリの
/logs
URL にアクセスします。https://PROJECT_ID.REGION_ID.r.appspot.com/logs
これにより、Cloud Logging にカスタムのエントリが送信されます。エンティティには、
NOTICE
のログの重大度と、「Hey, you triggered a custom log entry. Good job!」というメッセージが含まれます。gcloud
コマンドの出力には、新しいログエントリが表示されます。Waiting for new log entries... 2019-03-27 22:17:01 default[20190327t151430] "Hey, you triggered a custom log entry. Good job!"
Error Reporting でエラーをモニタリングする
-
Cloud Console の [Error Reporting] ページに移動します。
[Error Reporting] ページに移動
Error Reporting では、アプリ内のエラーと例外が強調表示され、そのアラートを設定できます。 - ブラウザで、アプリの
/errors
URL にアクセスします。https://PROJECT_ID.REGION_ID.r.appspot.com/errors
これにより、新しいテストの例外が生成され、Google Cloud のオペレーション スイートに送信されます。
-
Cloud Console の [Error Reporting] ページに戻り、しばらくすると新しいエラーが表示されます。[自動再読み込み] をクリックすると、ページを手動で更新する必要がなくなります。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
プロジェクトの削除
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.