Guía de inicio rápido: desplegar una función de Cloud Run con gcloud CLI
En esta página se muestra cómo desplegar una función HTTP de Cloud Run mediante la CLI de gcloud.
Antes de empezar
- 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.
-
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run Admin API, and Cloud Logging APIs:
gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com run.googleapis.com logging.googleapis.com -
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/run.sourceDeveloper, roles/run.admin, roles/logging.viewer
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Replace the following:
PROJECT_ID
: your project ID.USER_IDENTIFIER
: the identifier for your user account—for example,myemail@example.com
.ROLE
: the IAM role that you grant to your user account.
-
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run Admin API, and Cloud Logging APIs:
gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com run.googleapis.com logging.googleapis.com -
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/run.sourceDeveloper, roles/run.admin, roles/logging.viewer
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Replace the following:
PROJECT_ID
: your project ID.USER_IDENTIFIER
: the identifier for your user account—for example,myemail@example.com
.ROLE
: the IAM role that you grant to your user account.
- Para definir el proyecto predeterminado de tu servicio de Cloud Run, sigue estos pasos:
Sustituye PROJECT_ID por el nombre del proyecto que has creado para esta guía de inicio.gcloud config set project PROJECT_ID
Si tu proyecto está sujeto a una política de organización de restricción de dominio que restringe las invocaciones no autenticadas, tendrás que acceder al servicio desplegado tal como se describe en la sección Probar servicios privados.
-
Asegúrate de que tienes asignado el rol Usuario de cuenta de servicio en la identidad de servicio. De forma predeterminada, la identidad de servicio es la cuenta de servicio predeterminada de Compute Engine.
Conceder los roles
Para conceder acceso al recurso de identidad de servicio, usa el comando
gcloud iam service-accounts add-iam-policy-binding
y sustituye las variables destacadas por los valores correspondientes:gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --member="PRINCIPAL" \ --role="roles/iam.serviceAccountUser"
Haz los cambios siguientes:
- SERVICE_ACCOUNT_EMAIL: la dirección de correo de la cuenta de servicio
que usas como identidad de servicio, como:
- Cuenta de servicio predeterminada de Compute Engine:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
- Una cuenta de servicio que has creado:
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
- Cuenta de servicio predeterminada de Compute Engine:
- PRINCIPAL: el identificador de usuario. Normalmente, se trata de la dirección de correo de una cuenta de Google.
- SERVICE_ACCOUNT_EMAIL: la dirección de correo de la cuenta de servicio
que usas como identidad de servicio, como:
- Concede a la cuenta de servicio de Cloud Build el siguiente rol de gestión de identidades y accesos.
Haz clic para ver los roles necesarios de la cuenta de servicio de Cloud Build
Cloud Build usa automáticamente la cuenta de servicio predeterminada de Compute Engine como cuenta de servicio predeterminada de Cloud Build para compilar tu código fuente y tu recurso de Cloud Run, a menos que anules este comportamiento. Para que Cloud Build compile tus fuentes, pide a tu administrador que conceda el rol Compilador de Cloud Run (
roles/run.builder
) a la cuenta de servicio predeterminada de Compute Engine de tu proyecto:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
Sustituye
PROJECT_NUMBER
por el número de tu proyecto Google Cloud yPROJECT_ID
por el ID de tu proyecto Google Cloud. Para obtener instrucciones detalladas sobre cómo encontrar el ID y el número de tu proyecto, consulta el artículo Crear y gestionar proyectos.La concesión del rol de compilador de Cloud Run a la cuenta de servicio predeterminada de Compute Engine tarda un par de minutos en propagarse.
Crea un directorio llamado
helloworld
y cambia a ese directorio:mkdir helloworld cd helloworld
Crea un archivo
package.json
en el directoriohelloworld
para especificar las dependencias de Node.js:Crea un archivo
index.js
en el directoriohelloworld
con el siguiente ejemplo de Node.js:Crea un directorio llamado
helloworld
y cambia a ese directorio:mkdir helloworld cd helloworld
Crea un archivo
requirements.txt
en el directoriohelloworld
para especificar las dependencias de Python:De esta forma, se añaden los paquetes que necesita el ejemplo.
Crea un archivo
main.py
en el directoriohelloworld
con el siguiente ejemplo de Python:Crea un directorio llamado
helloworld
y cambia a ese directorio:mkdir helloworld cd helloworld
Crea un archivo
go.mod
para declarar el módulo de Go:Crea un archivo
hello_http.go
en el directoriohelloworld
con el siguiente código de ejemplo de Go:Crea un directorio llamado
helloworld
y cambia a ese directorio:mkdir helloworld cd helloworld
Crea la siguiente estructura de proyecto para que contenga el directorio de origen y el archivo de origen:
mkdir -p ~/helloworld/src/main/java/functions touch ~/helloworld/src/main/java/functions/HelloWorld.java
Actualiza el archivo
HelloWorld.java
con el siguiente código de muestra de Java:Crea un archivo
pom.xml
en el directoriohelloworld
y añade las siguientes dependencias de Java:Crea un directorio llamado
helloworld
y cambia a ese directorio:mkdir helloworld cd helloworld
Crea un archivo llamado
app.rb
y pega el siguiente código en él:Crea un archivo llamado
Gemfile
y copia lo siguiente en él:Si no tienes instalada la versión 2.0 o una posterior de Bundler, instala Bundler.
Genera un archivo
Gemfile.lock
ejecutando el siguiente comando:bundle install
Crea un directorio llamado
helloworld
y cambia a ese directorio:mkdir helloworld cd helloworld
Crea un archivo llamado
index.php
y pega el siguiente código en él:Si no usas Cloud Shell, crea un archivo
composer.json
y pega el siguiente código en él:Instala el SDK de.NET.
En la consola, crea un proyecto web vacío con el comando dotnet.
dotnet new web -o helloworld-csharp
Cambia al directorio
helloworld-csharp
:Sustituye el código de ejemplo del archivo de proyecto
helloworld-csharp.csproj
por el siguiente:Sustituye el código de ejemplo del archivo
Program.cs
por el siguiente:Para implementar la función, ejecuta el siguiente comando en el directorio que contiene el código de muestra:
Node.js
gcloud run deploy nodejs-http-function \ --source . \ --function helloGET \ --base-image nodejs22 \ --region REGION \ --allow-unauthenticated
Sustituye REGION por la Google Cloud región del servicio en el que quieras desplegar tu función. Por ejemplo,
europe-west1
.Python
gcloud run deploy python-http-function \ --source . \ --function hello_get \ --base-image python313 \ --region REGION \ --allow-unauthenticated
Sustituye REGION por la Google Cloud región del servicio en el que quieras desplegar tu función. Por ejemplo,
europe-west1
.Go
gcloud run deploy go-http-function \ --source . \ --function HelloGet \ --base-image go124 \ --region REGION \ --allow-unauthenticated
Sustituye REGION por la Google Cloud región del servicio en el que quieras desplegar tu función. Por ejemplo,
europe-west1
.Java
Ejecuta el siguiente comando en el directorio que contiene el archivo
pom.xml
:gcloud run deploy java-http-function \ --source . \ --function functions.HelloWorld \ --base-image java21 \ --region REGION \ --allow-unauthenticated
Sustituye REGION por la Google Cloud región del servicio en el que quieras desplegar tu función. Por ejemplo,
europe-west1
.Ruby
gcloud run deploy ruby-http-function \ --source . \ --function hello_get \ --base-image ruby34 \ --region REGION \ --allow-unauthenticated
Sustituye REGION por la Google Cloud región del servicio en el que quieras desplegar tu función. Por ejemplo,
europe-west1
.PHP
gcloud run deploy php-http-function \ --source . \ --function helloGet \ --base-image php84 \ --region REGION \ --allow-unauthenticated
Sustituye REGION por la Google Cloud región del servicio en el que quieras desplegar tu función. Por ejemplo,
europe-west1
..NET
gcloud run deploy csharp-http-function \ --source . \ --function HelloWorld.Function \ --base-image dotnet8 \ --region REGION \ --allow-unauthenticated
Sustituye REGION por la Google Cloud región del servicio en el que quieras desplegar tu función. Por ejemplo,
europe-west1
.Cuando se complete el despliegue, la CLI de Google Cloud mostrará una URL en la que se esté ejecutando el servicio. Abre la URL en el navegador para ver el resultado de tu función.
Para desplegar una función de ejemplo en Cloud Run mediante la Google Cloud consola, consulta la guía de inicio rápido sobre cómo desplegar una función en Cloud Run mediante la Google Cloud consola.
Para desplegar funciones y crear activadores mediante la Google Cloud consola y la CLI de Google Cloud, consulta Desplegar funciones.
Para ver y eliminar funciones, consulta Gestionar revisiones de servicios.
Para crear contenedores de funciones en tu propia cadena de herramientas y desplegarlos en Cloud Run, consulta Crear funciones.
Para crear activadores con Eventarc, consulta Crear activadores con Eventarc.
Escribir la función de ejemplo
Para escribir una solicitud, sigue estos pasos:
Node.js
Python
Go
Java
Ruby
PHP
.NET
Desplegar la función
Importante: En esta guía de inicio rápido se da por hecho que tienes el rol de propietario o editor en el proyecto que vas a usar. De lo contrario, consulta los permisos necesarios para implementar un recurso de Cloud Run desde el origen.
Para implementar tu función de Cloud Run, sigue estos pasos:
Limpieza
Aunque Cloud Run no aplica cargos cuando el servicio no se está usando, es posible que se te cobre por almacenar la imagen de contenedor en Artifact Registry. Puede eliminar su imagen de contenedor o su proyecto Google Cloud para evitar que se le apliquen cargos. Al eliminar tu Google Cloud proyecto, se detendrá la facturación de todos los recursos utilizados en ese proyecto.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID