Deploy a Cloud Run function

This guide shows you how to deploy a Cloud Run function from source code.

The deployment process takes your source code and configuration settings and builds a runnable image that Cloud Run functions manages automatically in order to handle requests to your function.

Deployment basics

Users deploying Cloud Run functions must have the Cloud Run functions Developer IAM role or a role that includes the same permissions. See also Additional configuration for deployment.

Select a tab for instructions to deploy a function using the gcloud CLI or the Google Cloud console.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Use the gcloud functions deploy command to deploy a function:

    gcloud functions deploy YOUR_FUNCTION_NAME \
    --gen2 \
    --region=YOUR_REGION \
    --runtime=YOUR_RUNTIME \
    --source=YOUR_SOURCE_LOCATION \
    --entry-point=YOUR_CODE_ENTRYPOINT \
    TRIGGER_FLAGS
    

    The first argument, YOUR_FUNCTION_NAME, is a name for your deployed function. The function name must start with a letter followed by up to 62 letters, numbers, hyphens, or underscores, and must end with a letter or a number. The name of the Cloud Run service that is created for your function will replace underscores with hyphens and uppercase letters will be converted to lowercase. For example Function_1 will be given the name function-1 in Cloud Run.

    • The --gen2 flag specifies that you want to deploy to Cloud Run functions.

    • The --region flag specifies the region in which to deploy your function. See Locations for a list of regions supported by Cloud Run functions.

    • The --runtime flag specifies which language runtime your function uses. Cloud Run functions supports several runtimes - see Runtimes for more information.

    • The --source flag specifies the location of your function source code. See the following sections for details:

    • The --entry-point flag specifies the entry point to your function in your source code. This is the code that will be executed when your function runs. The value of this flag must be a function name or fully-qualified class name that exists in your source code. See Function entry point for more information.

    • To specify the trigger for your function, additional flags (represented as TRIGGER_FLAGS above) are required, depending on the trigger you want to use:

    Trigger flags Trigger description
    --trigger-http Trigger the function with an HTTP(S) request. See HTTP triggers for more information.
    --trigger-topic=YOUR_PUBSUB_TOPIC Trigger the function when a message is published to the specified Pub/Sub topic. See Pub/Sub triggers for more information.
    --trigger-bucket=YOUR_STORAGE_BUCKET Trigger the function when an object is created or overwritten in the specified Cloud Storage bucket. See Cloud Storage triggers for more information.
    --trigger-event-filters=EVENTARC_EVENT_FILTERS Trigger the function with Eventarc when an event occurs matching the specified filters. Requires the --gen2 flag to be specified. See Eventarc triggers for more information and additional options.

    You can optionally specify additional configuration, networking, and security options when you deploy a function.

    For a complete reference on the deployment command and its flags, see the gcloud functions deploy documentation.

    For some example deployment commands, see Command-line examples.

Console

  1. Go to the Cloud Run functions overview page in the Google Cloud console:

    Go to Cloud Run functions

    Make sure that the Google Cloud project to which you want to deploy Cloud Run functions is selected.

  2. Click Create function.

  3. In the Environment field, select Cloud Run functions.

  4. In the Function name field, enter a name for your function. The function name must start with a letter followed by up to 62 letters, numbers, hyphens, or underscores, and must end with a letter or a number. The name of the Cloud Run service that is created for your function will replace underscores with hyphens and uppercase letters will be converted to lowercase. For example Function_1 will be given the name function-1 in Cloud Run.

  5. In the Region field, select a region in which to deploy your function.

  6. In the Trigger section, follow the steps based on your selected environment:

    1. In the Trigger type field, select the trigger you want to use:
      • For an HTTPS trigger, select the appropriate option depending on whether you want to allow unauthenticated invocations of your function. Every Cloud Run functions has an endpoint for HTTP(S) triggers. By default, authentication is required. See Authenticating for invocation for more information.
      • For an event-driven function, choose one of Cloud Pub/Sub, Cloud Storage, Cloud Firestore, or Other trigger. See Eventarc triggers for more information.
      • Once you've completed the required fields, click Save trigger.
  7. Optionally, expand the Runtime, build... section at the end of the page for additional configuration and security options.

  8. Click Next to move to the Code step.

  9. In the Runtime field, select the language runtime your function uses. Cloud Run functions supports several runtimes - see Runtimes for more information.

  10. In the Entry point field, enter the entry point to your function in your source code. This is the code that will be executed when your function runs. The value of this flag must be a function name or fully-qualified class name that exists in your source code - see Function entry point for more information.

  11. In the Source code field, select the appropriate option for how you will supply the function source code. See the following sections for details:

  12. Click Deploy.

When deployment finishes successfully, functions appear with a green check mark in the Cloud Run functions overview page in the Google Cloud console:

Deployed functions in the Cloud console

The initial deployment of a function may take several minutes, while the underlying infrastructure is provisioned. Redeploying an existing function is faster, and incoming traffic is automatically migrated to the newest version.

Deploy from your local machine

This section describes how to deploy a function from source code located on your local machine.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Follow the deployment instructions above using the gcloud functions deploy command.

    For the --source flag, specify a local file system path to the root directory of the function source code - see Source directory structure. The current working directory is used if this flag is omitted.

    You can also optionally use the --stage-bucket flag to specify a Cloud Storage bucket to upload your source code to as part of deployment.

    During upload of your source code, Cloud Run functions excludes unnecessary files through the .gcloudignore file.

Console

  1. Follow the deployment instructions above using the Google Cloud console until you get to the Source code field.
  2. In the Source code field, select ZIP Upload.
  3. In the Destination bucket field, click Browse to select a Cloud Storage bucket to upload your source code to as part of deployment.
  4. In the ZIP file field, click Browse to select a ZIP file to upload from your local file system. Your function source files must be located at the root of the ZIP file - see Source directory structure.
  5. Click Deploy.

Deploy from Cloud Storage

This section describes how to deploy a function from source code located in a Cloud Storage bucket. The source code must be packaged as a ZIP file.

For Cloud Run functions to read from a Cloud Storage bucket, the Cloud Run functions service agent must have the storage.objects.get permission. If the source bucket is in the same project as your function, the permission is granted automatically. If the bucket is in a different project, you must grant the permission to the service agent manually.

See Use IAM permissions in the Cloud Storage documentation for information about controlling access to buckets.

With this permission you can now deploy a function from Cloud Storage:

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Follow the deployment instructions above using the gcloud functions deploy command.

    For the --source flag, specify a Cloud Storage path, starting with gs://. The object at the path must be a ZIP file containing the function source code. Your function source files must be located at the root of the ZIP file - see Source directory structure.

Console

  1. Follow the deployment instructions above using the Google Cloud console until you get to the Source code field.
  2. In the Source code field, select ZIP from Cloud Storage.
  3. In the Cloud Storage location field, click Browse to select a ZIP file from Cloud Storage. Your function source files must be located at the root of the ZIP file - see Source directory structure.
  4. Click Deploy.

Deploy from the Google Cloud console inline editor

This section describes how to write and deploy a function directly from the Google Cloud console using the provided inline editor.

  1. Follow the deployment instructions above using the Google Cloud console until you get to the Source code field.
  2. In the Source code field, select Inline Editor.
  3. Use the provided editor to create or edit source files as necessary - see Source directory structure.
    • The left pane lists your source files and lets you create, rename, and delete files.
    • The right pane is a text editor that lets you edit file contents.
  4. Click Deploy.

Command-line examples

This section shows deployment commands for some example deployment scenarios.

For details about different triggers supported by Cloud Run functions, see Cloud Run functions triggers.

HTTP function from local source code

Suppose you have an HTTP function as follows:

  • The function uses nodejs20.
  • The source code is located in the current working directory (.).
  • The entry point in the code is named myHttpFunction.

To deploy the function with the name my-http-function in the region us-central1, you use the following command:

gcloud functions deploy my-http-function \
  --gen2 \
  --region=us-central1 \
  --runtime=nodejs20 \
  --source=. \
  --entry-point=myHttpFunction \
  --trigger-http

Pub/Sub function from source code in Cloud Storage

Suppose you have an event-driven function as follows:

  • The function handles Pub/Sub message publish events.
  • The function uses python312.
  • The source code is located in Cloud Storage at the path. gs://my-bucket/my_function_source.zip.
  • The entry point in the code is named pubsub_handler.

To deploy the function with the name my-pubsub-function in the region europe-west1, and have the function triggered by messages on the Pub/Sub topic my-topic, you use the following command:

gcloud functions deploy my-pubsub-function \
  --gen2 \
  --region=europe-west1 \
  --runtime=python312 \
  --source=gs://my-bucket/my_function_source.zip \
  --entry-point=pubsub_handler \
  --trigger-topic=my-topic

Cloud Storage function from local source code

Suppose you have an event-driven function as follows:

  • The function handles Cloud Storage object deletion events.
  • The function uses java17.
  • The source code is located locally at the path ./functions/storage-function.
  • The entry point in the code is named myproject.StorageFunction.

To deploy the function with the name my-storage-function in the region asia-northeast1, and have the function triggered by events in the Cloud Storage bucket my-bucket, you use the following command:

gcloud functions deploy my-storage-function \
  --gen2 \
  --region=asia-northeast1 \
  --runtime=java17 \
  --source=./functions/storage-function \
  --entry-point=myproject.StorageFunction \
  --trigger-event-filters="type=google.cloud.storage.object.v1.deleted" \
  --trigger-event-filters="bucket=my-bucket"

Next steps