En este instructivo, te explicamos cómo se implementa una función de Pub/Sub subiendo un archivo ZIP del código fuente de una función a un bucket de Cloud Storage a través de Terraform para aprovisionar los recursos. Terraform es una herramienta de código abierto que permite aprovisionar recursos de Google Cloud con archivos de configuración declarativos.
En este instructivo se usa una función de Node.js como ejemplo, pero el contenido también se aplica a las funciones de Python, Go y Java. Las instrucciones son las mismas sin importar el entorno de ejecución que uses. Consulta las páginas de referencia de Hashicorp para obtener detalles sobre el uso de Terraform con la API de Cloud Functions v2.
Objetivos
- Aprender a usar Terraform para implementar una función de Pub/Sub
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
For details, see Cloud Run functions pricing.
Para obtener 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.
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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, 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.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes Acceder a la gcloud CLI 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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, 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.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes Acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init - Otorga
roles/run.invokeryroles/cloudbuild.builds.buildera la cuenta de servicio de procesamiento predeterminada. -
Prepara el entorno de desarrollo.
Clona el repositorio de la app de ejemplo en tu instancia de Cloud Shell:
git clone https://github.com/terraform-google-modules/terraform-docs-samples.git
Accede al directorio que contiene el código de muestra de Cloud Run Functions:
cd terraform-docs-samples/functions/pubsub
La muestra de Node.js que se usa en este instructivo es una función “Hello World” básica de Pub/Sub. Este es el archivo
main.tf:Publica un mensaje en el tema (en este ejemplo, el nombre del tema es
functions2-topic):gcloud pubsub topics publish TOPIC_NAME --message="Friend"
Lee los registros de la función para ver el resultado, en el que
FUNCTION_NAMEes el nombre de la función (en este ejemplo, el nombre de la función esfunction):gcloud functions logs read FUNCTION_NAME
Deberías ver un resultado de registro que incluya tu nuevo mensaje “Amigable“.
Si ya tienes instalada la gcloud CLI, ejecuta el siguiente comando para actualizarla:
gcloud components update
Configura el entorno
En este instructivo, ejecutarás comandos en Cloud Shell. Cloud Shell es un entorno de shell que tiene la Google Cloud CLI ya instalada y valores ya establecidos para el proyecto actual. La inicialización de Cloud Shell puede demorar varios minutos:
Prepara la aplicación
En Cloud Shell, sigue los pasos siguientes:
Inicializa Terraform
En el directorio terraform-docs-samples/functions/pubsub que contiene el archivo
main.tf, ejecuta este comando para agregar los complementos necesarios y compilar el
directorio .terraform:
terraform init
Valida la configuración de Terraform
Obtén una vista previa de la configuración de Terraform. Este paso es opcional, pero te permite
verificar que la sintaxis de main.tf sea correcta. Este comando muestra una
vista previa de los recursos que se crearán:
terraform plan
Aplica la configuración de Terraform
Aplica la configuración para implementar la función. Cuando se te solicite, ingresa yes.
terraform apply
Activa la función
Para probar la función de Pub/Sub, sigue estos pasos:
Realiza una limpieza
Después de completar el instructivo, puedes borrar todo lo que creaste para no incurrir en más costos.
Terraform permite quitar todos los recursos definidos en el archivo de configuración
ejecutando el comando terraform destroy:
terraform destroy
Ingresa yes para permitir que Terraform borre tus recursos.