Python スタートガイド

このチュートリアルは、初めてクラウドでアプリを構築する方々を対象にしています。 エンジニアやウェブ デベロッパーなどが、に適用できるアプリ開発の重要なコンセプトを学習する場合に役立ちます。 Google Cloud

目標

費用

このドキュメントでは、課金対象である次のコンポーネントを使用します。 Google Cloud

このドキュメントの手順は、リソース使用量が Google Cloud's Always Free ティアの制限内に収まるように設計されています。 料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。

新規の Google Cloud ユーザーの方は、無料トライアルをご利用いただける場合があります。

このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。

始める前に

  1. アカウントに Google Cloud ログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Firestore データベースをネイティブ モードで作成するには、次の手順に沿って操作してください。
    1. コンソール Google Cloud で、[**Firestore のデータベースの作成**] ページに移動します。

      Firestore のデータベースの作成に移動

    2. [Cloud Firestore モードの選択] 画面から [ネイティブ モードを選択] をクリックします。
    3. Firestore データベースのロケーションを選択します。このロケーション設定は、 プロジェクトのデフォルトの Google Cloud リソースのロケーションです Google Cloud 。 このロケーションは、ロケーション設定を必要とする Google Cloud プロジェクト内の Google Cloud サービス(特にデフォルトのCloud StorageバケットおよびCloud Runアプリ)で使用されます。
    4. [データベースを作成] をクリックします。
  7. Cloud Run Admin、Cloud Storage、Cloud Logging、Error Reporting API を有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限が付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法をご覧ください

    API を有効にする

  8. サンプル リポジトリのクローンを作成して、Cloud Shell でサンプル アプリケーションを開きます。
    Cloud Shell に移動

    Cloud Shell を使用すると、ブラウザからコマンドラインで直接 Google Cloud リソースにアクセスできます。

  9. リポジトリのクローンを作成するプロンプトで、[確認] をクリックします。
  10. Cloud Shell で、gcloud ツールを構成して新しい Google Cloud プロジェクトを使用します。

    # Configure gcloud for your project
    gcloud config set project PROJECT_ID

    PROJECT_ID は、 Google Cloud コンソール Google Cloud を使用して作成したプロジェクト ID に置き換えます。

    Google Cloud CLI は、コマンドラインから Google Cloud リソースを操作する基本的な方法です。このチュートリアルでは、gcloud ツールを使用してアプリをデプロイおよびモニタリングします。

アプリを実行する

  1. Cloud Shell で、pip を使用してアプリの依存関係をインストールします。

    pip3 install -r requirements.txt --user
    
  2. Gunicorn HTTP サーバーを実行します。
    ~/.local/bin/gunicorn -b :8080 main:app
    
  3. Cloud Shell で、[**ウェブでプレビュー**] , をクリックし、[**ポート 8080 でプレビュー**] を選択します。新しいウィンドウが開き、実行中のアプリが表示されます。

アプリを Cloud Run にデプロイする

Google Cloud には、コードを実行する際に使用できるオプションがいくつか用意されています。この 例では、Cloud Run を使用してスケーラブルなアプリを Google Cloudにデプロイします。Cloud Run では、サーバーを管理する必要はなく、トラフィックの急増に対応するために自動的にスケーリングします。

  1. Cloud Build を使用して Docker コンテナをビルドし、Container Registry に公開します。
    gcloud builds submit --tag gcr.io/PROJECT_ID/bookshelf .

    PROJECT_ID を、作成した Google Cloudプロジェクトのプロジェクト ID に置き換えます。

  2. Cloud Run を使用してコンテナを実行します。
    gcloud run deploy bookshelf --image gcr.io/PROJECT_ID/bookshelf \
    --platform managed --region us-central1 --allow-unauthenticated

    これで、アプリは gcloud run の出力に表示される URL で確認できるようになりました。

    Service [bookshelf] revision [bookshelf-00001] has been deployed and is serving 100 percent of traffic. 
    Service URL: https://bookshelf-swsmmh5s5a-uc.a.run.app

  3. URL を Web ブラウザにコピーして、アプリを表示します。

    Bookshelf アプリのホームページ

Cloud Run へのデプロイの詳細については、Cloud Run のドキュメントをご覧ください。

Firestore を使用してデータを保存する

Cloud Run インスタンスに情報を保存することはできません。インスタンスを再起動すると情報が失われ、新しいインスタンスが作成されたときにはその情報は存在しないためです。そこで、すべてのインスタンスが読み取りおよび書き込みするデータベースを使用します。

Google Cloud には データを保存する際に使用できるオプションがいくつか用意されています。この例では、Firestore を使用して各書籍のデータを保存します。 Firestore はフルマネージドでサーバーレスの NoSQL ドキュメント データベースで、データを保存および照会できます。Firestore はアプリのニーズを満たすために自動でスケールし、使用しない場合はゼロにスケールします。最初の書籍を追加しましょう。

  1. デプロイしたアプリ用の書籍を作成するには、[Add book] をクリックします。

    Bookshelf アプリに書籍を追加する
  2. [Title] 項目に「Moby Dick」と入力します。
  3. [Author] 項目に「Herman Melville」と入力します。
  4. [保存] をクリックします。Bookshelf アプリにエントリが追加されました。

    Moby Dick の Bookshelf アプリのエントリ
  5. コンソール Google Cloud で Firestore ページを更新するには、 [Refresh] をクリックします。 データが Firestore に表示されます。Bookshelf アプリは、各書籍を 一意の ID とともに Firestore ドキュメントとして保存し、これらのドキュメントはすべて Firestore コレクション内に保存されます。 このチュートリアルでは、コレクションを書籍集(books)と呼びます。