Neste tutorial, você vai aprender a implantar uma função do Pub/Sub fazendo upload de um arquivo ZIP do código-fonte da função em um bucket do Cloud Storage usando o Terraform para provisionar os recursos. O Terraform é uma ferramenta de código aberto que permite provisionar Google Cloud recursos com arquivos de configuração declarativos.
Neste tutorial, usamos uma função Node.js como exemplo, mas ela também funciona com funções Python, Go e Java. As instruções são as mesmas, independentemente do ambiente de execução usado. Consulte as páginas de referência do Hashicorp para mais detalhes sobre como usar o Terraform com a API Cloud Functions v2.
Objetivos
- Saiba como usar o Terraform para implantar uma função Pub/Sub.
Custos
Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:
For details, see Cloud Run functions pricing.
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, 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.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, Artifact Registry, and Cloud Storage APIs.
- Install the Google Cloud CLI.
-
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 Build, Artifact Registry, and Cloud Storage APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Conceda
roles/run.invoker
e oroles/cloudbuild.builds.builder
à conta de serviço de computação padrão. -
Prepare seu ambiente de desenvolvimento.
Se a gcloud CLI já estiver instalada, atualize-a executando o seguinte comando:
gcloud components update
Como configurar o ambiente
Neste tutorial, você executa comandos no Cloud Shell. O Cloud Shell é um ambiente com a Google Cloud CLI pré-instalada, incluindo a Google Cloud CLI e os valores já definidos para o projeto atual. O Cloud Shell pode demorar vários minutos para ser inicializado.
Como preparar o aplicativo
No Cloud Shell, execute as seguintes etapas:
Clone o repositório de aplicativos de amostra para sua instância do Cloud Shell:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Mude para o diretório que contém o código de amostra das funções do Cloud Run:
cd nodejs-docs-samples/functions/v2/helloPubSub/
A amostra Node.js usada neste tutorial é uma função básica do Pub/Sub "Hello World".
Crie um arquivo ZIP com o código-fonte da função que o Terraform enviará para um bucket do Cloud Storage:
zip -r function-source.zip .
A raiz do arquivo ZIP precisa ser o diretório raiz do código-fonte da função. Portanto, o comando acima inclui os arquivos no diretório
helloworld
, mas não inclui o próprio diretório.
Crie seu arquivo main.tf
.
No diretório
nodejs-docs-samples/functions/
, crie um arquivomain.tf
para a configuração do Terraform:touch main.tf
Copie esta configuração do Terraform para seu arquivo
main.tf
:Edite o arquivo
main.tf
para garantir que ele tenha os valores corretos dos itens a seguir. Você precisa editar esse arquivo sempre que a configuração mudar (por exemplo, para usar um ambiente de execução diferente ou implantar uma função diferente):- Ambiente de execução: neste exemplo, o ambiente de execução é
nodejs16
. - Ponto de entrada da função: neste exemplo, o ponto de entrada da função é
helloPubSub
. - Caminho para o arquivo ZIP: neste exemplo, se você colocou o arquivo
main.tf
no diretórionodejs-docs-samples/functions/
, conforme descrito acima, o caminho é./v2/helloPubSub/function-source.zip
.
- Ambiente de execução: neste exemplo, o ambiente de execução é
Inicialize o Terraform
No Cloud Shell, execute o seguinte comando para inicializar o Terraform:
docker run -v $(pwd):/app -w /app hashicorp/terraform:0.12.0 init
A imagem de Docker pública do Terraform será usada. O Docker já está instalado no Cloud Shell. O diretório de trabalho atual é montado como um volume para que o contêiner do Docker possa ler o arquivo de configuração do Terraform.
Execute este comando para adicionar os plug-ins necessários e criar o diretório
.terraform
:terraform init
Validar a configuração do Terraform
Visualizar a configuração do Terraform. Essa etapa é opcional, mas permite
verificar se a sintaxe de main.tf
está correta. Este comando mostra uma prévia dos recursos que serão criados:
terraform plan
Aplique a configuração do Terraform:
Implante a função aplicando a configuração. Quando solicitado, digite yes
.
terraform apply
Como acionar a função
Para testar a função do Pub/Sub:
Publique uma mensagem no tópico. Neste exemplo, o nome do tópico é
functions2-topic
:gcloud pubsub topics publish TOPIC_NAME --message="Friend"
Leia os registros da função para ver o resultado, em que
FUNCTION_NAME
é o nome da função. Neste exemplo, o nome da função é apenasfunction
:gcloud beta functions logs read FUNCTION_NAME --gen2
Você verá a saída de geração de registros que inclui a nova mensagem "Friend".
Limpar
Depois de concluir o tutorial, exclua tudo o que foi criado para que você não tenha custos adicionais.
O Terraform permite remover todos os recursos definidos no arquivo de configuração
executando o comando terraform destroy
:
terraform destroy
Digite yes
para permitir que o Terraform exclua seus recursos.