En este tutorial se muestra cómo desplegar una función HTTP subiendo un archivo ZIP del código fuente de la función a un segmento de Cloud Storage y usando Terraform para aprovisionar los recursos. Terraform es una herramienta de código abierto que te permite aprovisionar Google Cloud recursos con archivos de configuración declarativos.
En este tutorial se usa una función HTTP de Node.js como ejemplo, pero también funciona con funciones HTTP de Python, Go y Java. Las instrucciones son las mismas independientemente del tiempo de ejecución que utilices.
Cuando despliegues con Terraform, debes subir el archivo fuente comprimido de tu función a un segmento de Cloud Storage (source_archive_bucket
) y especificar el nombre del objeto de Cloud Storage (source_archive_object
) en la configuración de Terraform. Para obtener más información, consulta la guía de especificaciones de Terraform.
Cloud Run Functions copia el archivo de origen que subes en source_archive_bucket
a un
contenedor de tu proyecto con un nombre que sigue el formato gcf-v2-sources-PROJECT_NUMBER-REGION
(Cloud Run Functions) o gcf-sources-PROJECT_NUMBER-REGION
Cloud Run Functions (1.ª gen.). Esta configuración varía en función de la dependencia de CMEK.
Objetivos
- Consulta cómo usar Terraform para desplegar una función HTTP.
Costes
En este documento, se utilizan los siguientes componentes facturables de Google Cloud:
For details, see Cloud Run functions pricing.
Para generar una estimación de costes basada en el uso previsto,
utiliza la calculadora de precios.
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.
-
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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Run, Cloud Build, Artifact Registry, and Cloud Storage 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. -
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
-
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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Run, Cloud Build, Artifact Registry, and Cloud Storage 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. -
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
-
Prepara tu entorno de desarrollo.
Los usuarios que implementen funciones deben tener el rol de gestión de identidades y accesos Desarrollador de Cloud Functions (
roles/cloudfunctions.developer
) o un rol que incluya los mismos permisos. Consulta también la sección Configuración adicional para la implementación.Para obtener los permisos necesarios para acceder al segmento de Cloud Storage, pide a tu administrador que conceda a la identidad de gestión de identidades y accesos que implementa la función el rol Administrador de almacenamiento (
roles/storage.admin
). Para obtener más información sobre los roles y permisos de Cloud Storage, consulta Gestión de identidades y accesos para Cloud Storage.Clona el repositorio de la aplicación de ejemplo en tu instancia de Cloud Shell:
git clone https://github.com/terraform-google-modules/terraform-docs-samples.git
Cambia al directorio que contiene los ejemplos de código de Cloud Run Functions:
cd terraform-docs-samples/functions/basic
El ejemplo de Node.js que se usa en este tutorial es una función HTTP básica de "Hola, mundo". Este es el archivo
main.tf
:Cuando la función termine de implementarse, anota la propiedad URI o búscala con el siguiente comando:
gcloud functions describe function-v2 --gen2 --region=us-central1 --format="value(serviceConfig.uri)"
Envía una solicitud a esta URL para ver el mensaje "Hello World" de tu función. Ten en cuenta que la función se implementa y requiere autenticación. Por lo tanto, debes proporcionar las credenciales en tu solicitud:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" YOUR_FUNCTION_URL
Si ya tienes instalada la CLI de gcloud, actualízala ejecutando el siguiente comando:
gcloud components update
Roles obligatorios
Configurar un entorno
En este tutorial, ejecutarás comandos en Cloud Shell. Cloud Shell es un entorno de shell con la CLI de Google Cloud ya instalada, incluidos la CLI de Google Cloud y los valores ya definidos para tu proyecto actual. Cloud Shell puede tardar varios minutos en inicializarse:
Preparar la aplicación
En Cloud Shell, sigue estos pasos:
Inicializar Terraform
En el directorio terraform-docs-samples/functions/basic
que contiene el archivo main.tf
, ejecuta este comando para añadir los complementos necesarios y crear el directorio .terraform
:
terraform init
Aplica la configuración de Terraform
En el mismo directorio terraform-docs-samples/functions/basic
que contiene el archivo main.tf
, implementa la función aplicando la configuración. Cuando se te solicite, introduce
yes
:
terraform apply
Probar función
Limpieza
Una vez que hayas completado el tutorial, puedes eliminar todo lo que hayas creado para no incurrir en más costes.
Terraform te permite eliminar todos los recursos definidos en el archivo de configuración ejecutando el comando terraform destroy
en el directorio terraform-docs-samples/functions/basic
que contiene el archivo main.tf
:
terraform destroy
Escribe yes
para permitir que Terraform elimine tus recursos.