Neste tutorial, você verá como implantar uma função HTTP 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 recursos Google Cloud com arquivos de configuração declarativos.
Neste tutorial, usamos uma função HTTP Node.js como exemplo, mas ela também funciona com funções HTTP Python, Go e Java. As instruções são as mesmas, independentemente do ambiente de execução que você está usando.
Ao implantar com o Terraform, é necessário fazer upload do arquivo de origem compactado da função para um bucket do Cloud Storage (source_archive_bucket
) e especificar o nome do objeto do Cloud Storage (source_archive_object
) na configuração do Terraform. Para mais informações, consulte o guia de especificações do Terraform.
O Cloud Run functions copia o arquivo de origem que você faz upload no source_archive_bucket
para
um bucket no seu projeto com um nome que segue o formato gcf-v2-sources-PROJECT_NUMBER-REGION
(Cloud Run functions) ou gcf-sources-PROJECT_NUMBER-REGION
Cloud Run functions (1ª geração). Essa configuração varia de acordo com a dependência da CMEK.
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/terraform-google-modules/terraform-docs-samples.git
Mude para o diretório que contém os exemplos de código de exemplo das funções do Cloud Run:
cd terraform-docs-samples/functions/basic
A amostra Node.JS usada neste tutorial é uma função HTTP básica "Hello World". Este é o arquivo
main.tf
:
Inicialize o Terraform
No diretório terraform-docs-samples/functions/basic
que contém o arquivo main.tf
, execute este comando para adicionar os plug-ins necessários e criar o diretório
.terraform
:
terraform init
Aplique a configuração do Terraform:
No mesmo diretório terraform-docs-samples/functions/basic
que contém o arquivo
main.tf
, implante a função aplicando a configuração. Quando solicitado,
digite yes
.
terraform apply
Testar a função
Quando a implantação da função estiver concluída, anote a propriedade ou encontre-a usando o seguinte comando:
gcloud functions describe function-v2 --gen2 --region=us-central1 --format="value(serviceConfig.uri)"
Faça uma solicitação a este URL para ver a mensagem "Hello World" da sua função. Observe que a função é implantada exigindo autenticação. Portanto, é necessário fornecer as credenciais na sua solicitação:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" YOUR_FUNCTION_URL
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
no diretório terraform-docs-samples/functions/basic
que contém o arquivo main.tf
:
terraform destroy
Digite yes
para permitir que o Terraform exclua seus recursos.