Deploy a Cloud Function
This guide shows you how to deploy a Cloud Function from source code.
The deployment process takes your source code and configuration settings and builds a runnable image that Cloud Functions manages automatically in order to handle requests to your function.
Deployment basics
Users deploying Cloud Functions must have the Cloud Functions Developer IAM role or a role that includes the same permissions. See also Additional configuration for deployment.
Below are instructions for deploying a function using the gcloud CLI or the Google Cloud console.
gcloud
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, which can consist of lowercase letters, numbers,
hyphens, and underscores.
The
--gen2
flag specifies that you want to deploy to Cloud Functions (2nd gen). Omitting this flag results in deployment to Cloud Functions (1st gen). See Cloud Functions version comparison for a comparison of Cloud Functions (1st gen) and Cloud Functions (2nd gen).The
--region
flag specifies the region in which to deploy your function. See Locations for a list of regions supported by Cloud Functions.The
--runtime
flag specifies which language runtime your function uses. Cloud 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
|
(2nd gen only) 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. |
--trigger-event=EVENT_TYPE |
(1st gen only) Trigger the function when the specified event occurs. Specifying a resource is required for some event types. See Triggers supported in Cloud Functions (1st gen) for more information. |
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
Go to the Cloud Functions overview page in the console:
Make sure that the Google Cloud project to which you want to deploy Cloud Functions is selected.
Click Create function.
In the Environment field, select 1st gen or 2nd gen. See Cloud Functions version comparison for a comparison of Cloud Functions (1st gen) and Cloud Functions (2nd gen).
In the Function name field, enter a name for your function. This name can consist of lowercase letters, numbers, hyphens, and underscores.
In the Region field, select a region in which to deploy your function.
In the Trigger section, follow the steps based on your selected environment:
- 1st gen
- In the Trigger type field, select a trigger type. See Triggers supported in Cloud Functions (1st gen) for more details.
- Complete the additional fields for your selected trigger type.
- Click Save.
- 2nd gen
- In the HTTPS Authentication section, select the appropriate option depending on whether you want to allow unauthenticated invocations of your function. Every 2nd gen function has an endpoint for HTTP(S) triggers. By default, authentication is required. See Authenticating for invocation for more information.
- To deploy an event-driven function, click Add Eventarc trigger to add a trigger. See Eventarc triggers for more information. Complete the fields in the Eventarc trigger pane and click Save trigger.
- 1st gen
Optionally, expand the Runtime, build... section at the end of the page to access additional configuration and security options.
Click Next to move to the Code step.
In the Runtime field, select the language runtime your function uses. Cloud Functions supports several runtimes - see Runtimes for more information.
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.
In the Source code field, select the appropriate option for how you will supply the function source code. See the following sections for details:
Click Deploy.
When deployment finishes successfully, functions appear with a green check mark in the Cloud Functions overview page in the 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
Follow the deployment instructions above using the
gcloud functions deploy
command.
For the --source
flag, specify a local filesystem 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 Functions excludes unnecessary
files via the .gcloudignore
file.
Console
- Follow the deployment instructions above using the console until you get to the Source code field.
- In the Source code field, select ZIP Upload.
- In the ZIP file field, click Browse to select a ZIP file to upload from your local filesystem. Your function source files must be located at the root of the ZIP file - see Source directory structure.
- In the Stage bucket field, click Browse to select a Cloud Storage bucket to upload your source code to as part of deployment.
- 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.
gcloud
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
- Follow the deployment instructions above using the console until you get to the Source code field.
- In the Source code field, select ZIP from Cloud Storage.
- 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.
- Click Deploy.
Deploy from a source repository
This section describes how to deploy a function from source code located in Cloud Source Repositories. Deploying from Cloud Source Repositories also enables you to deploy code hosted in a GitHub or Bitbucket repository.
Before you can deploy code from Cloud Source Repositories, you must set up a repository and optionally connect it to your GitHub or Bitbucket repository.
For Cloud Functions to read from a source repository, the
Cloud Functions service agent
needs the Source Repository Reader (roles/source.reader
) IAM role on the
repository. If your source repository is in the same project as your function,
this permission is included automatically. If the source repository is in a
different project, you must
manually grant the permission.
Then, you can deploy your functions from the repository:
gcloud
Follow the deployment instructions above using the
gcloud functions deploy
command.
For the --source
flag, specify a source repository reference to the
location of your function source code - see
Source directory structure.
The most basic reference for Cloud Source Repositories has the following format:
https://source.developers.google.com/projects/PROJECT_ID/repos/REPOSITORY_NAME
In the above path, PROJECT_ID
is your Google Cloud project
ID and REPOSITORY_NAME
is the name of your source
repository. With this path, source code from the root directory of the
repository on the revision tagged master
will be used.
To deploy from a revision other than master
, append one of the following to
the above path:
/revisions/REVISION_NAME
/moveable-aliases/MOVEABLE_ALIAS
/fixed-aliases/FIXED_ALIAS
To deploy source code from a directory other than the repository root, specify
a revision, moveable alias, or fixed alias as above and append
/paths/PATH_TO_YOUR_SOURCE_DIRECTORY
to the path.
Console
- Follow the deployment instructions above using the console until you get to the Source code field.
- In the Source code field, select Cloud Source repository.
- In the Repository field, enter the name of your source repository.
- In the Branch / tag field, select Branch or Tag depending on where you want to deploy from.
- Enter the branch or tag name where indicated.
- In the Directory with source code field, enter the path to the directory in your repository containing your function source code - see Source directory structure.
- Click Deploy.
Deploy from the console inline editor
This section describes how to write and deploy a function directly from the console using the provided inline editor.
- Follow the deployment instructions above using the console until you get to the Source code field.
- In the Source code field, select Inline Editor.
- Use the provided editor to create or edit source files as necessary - see
Source directory structure.
- The left pane lists your source files and allows you to create, rename, and delete files.
- The right pane is a text editor which allows you to edit file contents.
- Click Deploy.
Command-line examples
This section shows deployment commands for some example deployment scenarios.
For details about different triggers supported by Cloud Functions, see Cloud Functions triggers.
HTTP function from local source code
Suppose you have an HTTP function as follows:
- The function uses Node.js 16
- The source code is located in the current working directory (
.
) - The entry point in the code is named
myHttpFunction
To deploy the function to Cloud Functions (2nd gen) 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=nodejs16 \
--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 Python 3.9
- 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 to Cloud Functions (2nd gen) 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=python39 \
--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 Java 11
- 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 to Cloud Functions (2nd gen) 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=java11 \
--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
- See details about Cloud Functions triggers.
- Learn about the Cloud Functions build process.
- Explore additional Cloud Functions configuration options.
- Learn about securing Cloud Functions.
- See Tutorials for examples of specific use cases for Cloud Functions.