Este tutorial demonstra como implementar uma função do Pub/Sub carregando um ficheiro ZIP do código fonte de uma função para um contentor do Cloud Storage, usando o Terraform para aprovisionar os recursos. O Terraform é uma ferramenta de código aberto que lhe permite aprovisionar recursos com ficheiros de configuração declarativos Google Cloud
Este tutorial usa uma função Node.js como exemplo, mas também funciona com funções Python, Go e Java. As instruções são as mesmas, independentemente de qual destes tempos de execução estiver a usar. Consulte as páginas de referência da Hashicorp para ver detalhes sobre a utilização do Terraform com a API Cloud Functions v2.
Objetivos
- Saiba como usar o Terraform para implementar uma função do Pub/Sub.
Custos
Neste documento, usa os seguintes componentes faturáveis do Google Cloud:
For details, see Cloud Run functions pricing.
Para gerar uma estimativa de custos com base na sua utilização projetada,
use a calculadora de preços.
Antes de começar
- 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 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.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte 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 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.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
- Conceda
roles/run.invoker
e oroles/cloudbuild.builds.builder
à conta de serviço predefinida do Compute. -
Prepare o seu ambiente de desenvolvimento.
Clone o repositório da app de exemplo para a sua instância do Cloud Shell:
git clone https://github.com/terraform-google-modules/terraform-docs-samples.git
Altere para o diretório que contém o código de exemplo das funções do Cloud Run:
cd terraform-docs-samples/functions/pubsub
O exemplo do Node.js usado neste tutorial é uma função básica do Pub/Sub "Hello World". Aqui está o ficheiro
main.tf
:Publicar uma mensagem no tópico (neste exemplo, o nome do tópico é
functions2-topic
):gcloud pubsub topics publish TOPIC_NAME --message="Friend"
Leia os registos de funções para ver o resultado, onde
FUNCTION_NAME
é o nome da sua função (neste exemplo, o nome da função éfunction
):gcloud functions logs read FUNCTION_NAME
Deve ver o resultado do registo que inclui a nova mensagem "Friend".
Se já tiver a CLI gcloud instalada, atualize-a executando o seguinte comando:
gcloud components update
Configurar o seu ambiente
Neste tutorial, executa comandos no Cloud Shell. O Cloud Shell é um ambiente de shell com a CLI do Google Cloud já instalada, incluindo a CLI do Google Cloud, e com valores já definidos para o seu projeto atual. O Cloud Shell pode demorar vários minutos a inicializar:
A preparar a aplicação
No Cloud Shell, siga estes passos:
Inicialize o Terraform
No diretório terraform-docs-samples/functions/pubsub
que contém o ficheiro main.tf
, execute este comando para adicionar os plug-ins necessários e criar o diretório .terraform
:
terraform init
Valide a configuração do Terraform
Pré-visualize a configuração do Terraform. Este passo é opcional, mas permite-lhe verificar se a sintaxe de main.tf
está correta. Este comando mostra uma
pré-visualização dos recursos que vão ser criados:
terraform plan
Aplique a configuração do Terraform
Implemente a função aplicando a configuração. Quando lhe for pedido, introduza yes
:
terraform apply
Acionar a função
Para testar a função Pub/Sub:
Limpar
Depois de concluir o tutorial, pode eliminar tudo o que criou para não incorrer em custos adicionais.
O Terraform permite-lhe remover todos os recursos definidos no ficheiro de configuração executando o comando terraform destroy
:
terraform destroy
Introduza yes
para permitir que o Terraform elimine os seus recursos.