Get started with Python

This tutorial is intended for those new to building apps in the cloud, such asengineers and web developers, who want to learn key app development concepts asthey apply to Google Cloud.

Objectives

Costs

In this document, you use the following billable components of Google Cloud:

The instructions in this document are designed to keep your resource usage within the limits of Google Cloud'sAlways Free tier. To generate a cost estimate based on your projected usage, use thepricing calculator.

New Google Cloud users might be eligible for afree trial.

When you finish the tasks that are described in this document, you can avoid continued billing by deleting the resources that you created. For more information, seeClean up.

Before you begin

  1. 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.
  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 theresourcemanager.projects.create permission.Learn how to grant roles.
    Note: If you don't plan to keep the resources that you create in this procedure, create a project instead of selecting an existing project. After you finish these steps, you can delete the project, removing all resources associated with the project.

    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 theresourcemanager.projects.create permission.Learn how to grant roles.
    Note: If you don't plan to keep the resources that you create in this procedure, create a project instead of selecting an existing project. After you finish these steps, you can delete the project, removing all resources associated with the project.

    Go to project selector

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

  6. To create a Firestore database in Native mode, complete the following steps:
    1. In the Google Cloud console, go to theFirestore create database page.

      Go to Firestore create database

    2. From theSelect a Cloud Firestore mode screen, clickSelect Native Mode.
    3. Select alocation for your Firestore database. This location setting is the default Google Cloud resource location for your Google Cloud project. This location is used for Google Cloud services in your Google Cloud project that require a location setting, specifically, your defaultCloud Storage bucket and yourCloud Run app. Warning: After you set the default resource location for your Google Cloud project, you cannot change it.
    4. ClickCreate Database.
  7. Enable the Cloud Run Admin, Cloud Storage, Cloud Logging, and Error Reporting APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enable permission.Learn how to grant roles.

    Enable the APIs

  8. Clone the sample repo and open the sample application in Cloud Shell:
    Go to Cloud Shell

    Cloud Shell provides command-line access to your Google Cloud resources directly from the browser.

  9. To download the sample code and change into the app directory, clickProceed.
  10. In Cloud Shell, configure thegcloud tool to use your new Google Cloud project:

    # Configure gcloud for your projectgcloudconfigsetprojectPROJECT_ID

    ReplacePROJECT_ID with the Google Cloud project ID that you created using the Google Cloud console.

    TheGoogle Cloud CLI is the primary way you interact with your Google Cloud resources from the command line. In this tutorial, you use thegcloud tool to deploy and monitor your app.

Run your app

  1. In Cloud Shell, install your app dependencies usingpip:

    pip3 install -r requirements.txt --user
  2. Run the Gunicorn HTTP server:
    ~/.local/bin/gunicorn -b :8080 main:app
  3. In Cloud Shell, clickWeb preview, and selectPreview on port 8080. This opens a new window with your running app.

Deploy your app to Cloud Run

Google Cloud offersseveral options for running your code. For thisexample, you useCloud Runto deploy a scalable app to Google Cloud. Cloud Run doesn't require you to manage servers and automatically scales to support traffic spikes.

  1. Use Cloud Build to build a Docker container and publish to Container Registry:
    gcloud builds submit --tag gcr.io/PROJECT_ID/bookshelf .

    ReplacePROJECT_ID with the Google Cloud project ID that you created.

  2. Run the container with Cloud Run:
    gcloud run deploy bookshelf --image gcr.io/PROJECT_ID/bookshelf \--platform managed --region us-central1 --allow-unauthenticated

    Your app is now viewable at the URL displayed in the output ofgcloud run:

    Service[bookshelf]revision[bookshelf-00001]hasbeendeployedandisserving100percentoftraffic.ServiceURL:https://bookshelf-swsmmh5s5a-uc.a.run.app

  3. Copy the URL into your web browser to view the app.

    Bookshelf app homepage

    Note: This SSL-protected domain is created automatically, andis useful for development. You canset up a custom domain with Cloud Run as well.

For more information on deploying to Cloud Run, see theCloud Run documentation.

Persist your data with Firestore

You cannot store information on your Cloud Run instances, because itis lost if the instance is restarted, and doesn't exist when newinstances are created. Instead, you use a database that all your instancesread from and write to.

Google Cloud offersseveral options for storing your data. In thisexample, you use Firestore to store the data for each book.Firestore is a fully managed, serverless, NoSQL documentdatabase that lets you store and query data. Firestoreauto scales to meet your app needs, and scales to zero when you're not using it.Add your first book now.

  1. To create a book for your deployed app, clickAdd book.

    Add a book to the Bookshelf app
  2. In theTitle field, enterMoby Dick.
  3. In theAuthor field, enterHerman Melville.
  4. ClickSave. There is now an entry to your Bookshelf app.

    Moby Dick Bookshelf app entry
  5. In the Google Cloud console, to refresh the Firestore page, clickRefresh.The data appears in Firestore. The Bookshelf app stores each bookas aFirestore documentwith a unique ID, and all these documents are stored in aFirestore collection.For the purposes of this tutorial, the collection is called books.Example of a Firestore document.

Firestore stores the books by using theFirestore Client Library.Here is an example of fetching a Firestore document:

fromgoogle.cloudimportfirestore
db=firestore.Client()book_ref=db.collection(u'Book').document(book_id)snapshot=book_ref.get()

For more information on using Firestore, seeAdding data to Firestore.

Store file uploads in Cloud Storage

Now that you've added a book, it's time to add the book cover image. You cannotstore files on your instances. A database isn't the right choice for image files. Instead, you use Cloud Storage.

Cloud Storage is the primaryblob store for Google Cloud. You can use Cloud Storage tohost app assets that you want to share across Google Cloud. To useCloud Storage, you need to create aCloud Storage bucket,a basic container to hold your data.

  1. In the Google Cloud console, go to theCloud Storage Browser page.

    Go to the Cloud Storage Browser page

  2. ClickCreate bucket.
  3. In theCreate bucket dialog, enter a name for your bucket by appending your Google Cloud project ID to the string_bucket so the name looks likeYOUR_PROJECT_ID_bucket. This name is subject to thebucket name requirements. All other fields can remain at their default values.
  4. ClickCreate.
  5. After your bucket is created, objects must be made publicly accessible to be viewed by users. Tomake your objects publicly accessible seeMaking Data Public.
  6. ClickEdit book, and select animage to upload as your book's cover. For example, you can use this publicdomain image:
    Moby Dick book cover
  7. ClickSave. You're redirected to thehomepage, where there is an entry to your Bookshelf app.
    Moby Dick Bookshelf app entry

The bookshelf app sends uploaded files to Cloud Storage by using theCloud Storage Client Library.

client=storage.Client()bucket=client.bucket(bucketname)blob=bucket.blob(filename)blob.upload_from_string(file_stream,content_type=content_type)# Ensure the file is publicly readable.blob.make_public()url=blob.public_url
Note: You can change the bucket name by setting the$bucketId variable in thepreceding code to a different name and redeploying your app by running thegcloud app deploy command.

For more information on using Cloud Storage, see theCloud Storage introduction.

Monitor your app using Google Cloud Observability

You've deployed your app and created and modified books. To monitor these events for your users,use Application Performance Management.

Monitor logs with Cloud Logging

  1. In the Google Cloud, go to theLogs Explorer

    Go to Logs Explorer

    You can monitor your app in real time. If you have any issues with your app,this is one of the first places to look.

    Stackdriver Log Viewer
  2. In theResource drop-down list, selectCloud Run Revision, bookshelf.

Monitor errors with Error Reporting

  1. In the Google Cloud console, go to theError Reporting page.
    Go to Error Reporting page
    Error Reporting highlights errors and exceptions in your app andlets you set up alerting around them.
  2. In your browser, go to the/errors URL in your app.
    YOUR_CLOUD_RUN_URL/errors

    This generates a new test exception and sends it to Google Cloud Observability.

  3. In the Google Cloud console, return to theError Reporting page, and in a few moments thenew error is visible. ClickAuto Reload so you don'tneed to manually refresh the page.

    Error message from Error Reporting.

Clean up

To avoid incurring charges to your Google Cloud account for the resources used in this tutorial, either delete the project that contains the resources, or keep the project and delete the individual resources.

Delete the project

    Caution: Deleting a project has the following effects:
    • Everything in the project is deleted. If you used an existing project for the tasks in this document, when you delete it, you also delete any other work you've done in the project.
    • Custom project IDs are lost. When you created this project, you might have created a custom project ID that you want to use in the future. To preserve the URLs that use the project ID, such as anappspot.com URL, delete selected resources inside the project instead of deleting the whole project.

    If you plan to explore multiple architectures, tutorials, or quickstarts, reusing projects can help you avoid exceeding project quota limits.

  1. In the Google Cloud console, go to theManage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then clickDelete.
  3. In the dialog, type the project ID, and then clickShut down to delete the project.

What's next

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025-12-17 UTC.