En este instructivo, se muestra cómo implementar una función HTTP mediante la carga de un archivo ZIP de código fuente de función a un bucket de Cloud Storage mediante Terraform para aprovisionar los recursos. Terraform es una herramienta de código abierto que te permite aprovisionar recursos de Google Cloud con archivos de configuración declarativos.
Este instructivo usa una función HTTP de Node.js como ejemplo, pero también se aplica a las funciones HTTP de Python, Go y Java. Las instrucciones son las mismas sin importar el entorno de ejecución que uses.
Cuando implementes con Terraform, debes subir el archivo fuente comprimido de tu función a un bucket de Cloud Storage (source_archive_bucket
) y también 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.
Las funciones de Cloud Run copian el archivo fuente que subes en source_archive_bucket
a un bucket de tu proyecto con un nombre que sigue el formato gcf-v2-sources-PROJECT_NUMBER-REGION
(funciones de Cloud Run) o gcf-sources-PROJECT_NUMBER-REGION
funciones de Cloud Run (1ª gen.). Esta configuración varía según la dependencia de CMEK.
Objetivos
- Aprende a usar Terraform para implementar una función HTTP.
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
For details, see Cloud Run functions pricing.
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Antes de comenzar
- 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.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Run, Cloud Build, Artifact Registry, and Cloud Storage APIs.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Run, Cloud Build, Artifact Registry, and Cloud Storage APIs.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Prepara tu entorno de desarrollo.
Los usuarios que implementan funciones deben tener el rol de IAM Desarrollador de Cloud Functions (
roles/cloudfunctions.developer
) o un rol que incluya los mismos permisos. Consulta también Configuración adicional para la implementación.Para obtener los permisos de acceso al bucket de Cloud Storage, pídele a tu administrador que otorgue a la identidad de IAM que implementa la función el rol de Administrador de almacenamiento (
roles/storage.admin
). Si deseas obtener más detalles sobre los roles y los permisos de Cloud Storage, consulta IAM para Cloud Storage.
Si ya tienes instalado gcloud CLI, ejecuta el siguiente comando para actualizarla:
gcloud components update
Roles obligatorios
Configura tu entorno
En este instructivo, ejecutarás comandos en Cloud Shell. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada, incluida Google Cloud CLI, y valores ya establecidos para el proyecto actual. La inicialización de Cloud Shell puede tomar varios minutos:
Prepara la aplicación
En Cloud Shell, sigue los siguientes pasos:
Clona el repositorio de la app de muestra en tu instancia de Cloud Shell:
git clone https://github.com/terraform-google-modules/terraform-docs-samples.git
Ve al directorio que contiene los ejemplos de código de muestra de las funciones de Cloud Run:
cd terraform-docs-samples/functions/basic
La muestra de Node.js que se usa en este instructivo es una función HTTP “Hello World” básica. Este es el archivo
main.tf
:
Inicializa Terraform
En el directorio terraform-docs-samples/functions/basic
que contiene el archivo main.tf
, ejecuta este comando para agregar los complementos necesarios y compilar 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
, aplica la configuración para implementar la función. Cuando se te solicite, ingresa yes
.
terraform apply
Pruebe la función
Cuando la función termine de implementarse, toma nota de la propiedad URI o búscala con el siguiente comando:
gcloud functions describe function-v2 --gen2 --region=us-central1 --format="value(serviceConfig.uri)"
Realiza una solicitud a esta URL para ver el mensaje “Hello World” de tu función. Ten en cuenta que la función se implementa con el requisito de autenticación. Por lo tanto, debes proporcionar credenciales en tu solicitud:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" YOUR_FUNCTION_URL
Limpia
Después de completar el instructivo, puedes borrar todo lo que creaste para no incurrir en más costos.
Terraform te permite quitar todos los recursos definidos en el archivo de configuración mediante la ejecución del comando terraform destroy
en el directorio terraform-docs-samples/functions/basic
que contiene tu archivo main.tf
:
terraform destroy
Ingresa yes
para permitir que Terraform borre tus recursos.