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 do 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.
Objetivos
- Saiba como usar o Terraform para implantar uma função HTTP.
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.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Enable the Cloud Functions, Cloud Run, 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.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Enable the Cloud Functions, Cloud Run, Cloud Build, Artifact Registry, and Cloud Storage APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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 os exemplos de código de exemplo das funções do Cloud Run:
cd nodejs-docs-samples/functions
A amostra Node.js usada neste tutorial é uma função HTTP básica "Hello World".
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, substitua
nodejs16
pelo ambiente de execução mais recente do Node.jsnodejs20
. - Ponto de entrada da função: neste exemplo, o ponto de entrada da função é
helloHttp
. - Caminho para o diretório de origem: neste exemplo, mude
source_dir
parahelloworld/helloworldHttp
. - A configuração
member="allUsers"
do IAM não vai funcionar se o projeto estiver sujeito a uma política da organização de restrição de domínio que restrinja a concessão de papéis do IAM ao principalallUsers
. Use com cuidado na produção e considere uma lista de membros mais restrita, se possível.
- Ambiente de execução: neste exemplo, substitua
Inicialize o Terraform
No diretório nodejs-docs-samples/functions/
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 diretório nodejs-docs-samples/functions/
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 nodejs-docs-samples/functions/
que contém o arquivo main.tf
:
terraform destroy
Digite yes
para permitir que o Terraform exclua seus recursos.