Criar e implantar uma função do Cloud Run em HTTP com .NET
Este guia explica o processo de criação de uma função do Cloud Run usando a linguagem C# do ambiente de execução .NET. Há dois tipos de funções do Cloud Run:
- Uma função HTTP, que você invoca a partir de solicitações HTTP padrão.
- Uma função orientada a eventos, que é acionada por eventos em sua infraestrutura do Cloud, como mensagens em um tópico do Pub/Sub ou alterações em um bucket do Cloud Storage.
Para mais detalhes, leia Como escrever funções HTTP e Como escrever funções orientadas a eventos.
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 Build, Artifact Registry, Cloud Run, and Cloud Logging APIs.
-
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 Build, Artifact Registry, Cloud Run, and Cloud Logging APIs.
- Instale e inicialize o Google Cloud SDK.
- Atualize e instale os componentes
gcloud
com o comando a seguir.gcloud components update
-
Prepare seu ambiente de desenvolvimento.
Criar a função
Esta seção descreve como criar uma função .NET manualmente. Outra possibilidade é usar os modelos do Functions Framework para criar a função.
Para criar uma função:
Crie um diretório no seu sistema local para o código de função:
Windows
mkdir %HOMEPATH%\helloworld cd %HOMEPATH%\helloworld
Linux ou macOS
mkdir ~/helloworld cd ~/helloworld
Crie um arquivo chamado
Function.cs
no diretóriohelloworld
com o seguinte conteúdo:
Especificar as dependências
As funções do Cloud Run functions precisam de um conjunto de bibliotecas chamado Functions Framework. Para disponibilizar o Functions Framework para seu build, siga estas etapas:
Altere o diretório para o diretório
helloworld
que você acabou de criar:cd ~/helloworld
Crie um arquivo chamado
HelloWorld.csproj
no diretóriohelloworld
com o seguinte conteúdo:
Para saber como disponibilizar outras bibliotecas para sua compilação, seja por meio de arquivos de projeto ou dentro do código por meio de injeção de dependência, consulte Personalização por meio de classes de inicialização de funções.
Criar e testar a função localmente
Crie e execute a função localmente com o seguinte comando:
dotnet run
Acesse
http://localhost:8080
em um navegador ou executecurl localhost:8080
em outra janela para testar sua função. Se você estiver usando o Cloud Shell, clique no ícone e escolha Visualizar na porta 8080 para ver a saída da função.Saiba mais em Como enviar solicitações para funções locais.
implante a função
Para implantar a função, execute o comando a seguir no diretório helloworld
:
gcloud functions deploy csharp-http-function \
--gen2 \
--entry-point=HelloWorld.Function \
--runtime=dotnet6 \
--region=REGION \
--source=. \
--trigger-http \
--allow-unauthenticated
Substitua REGION pelo nome da região do Google Cloud em que você quer implantar a função
(por exemplo, us-west1
).
em que csharp-http-function
é o nome registrado pelo qual sua função
será identificada no Console do Google Cloud e --entry-point
especifica
o nome de classe totalmente qualificado da função (FQN).
A flag --allow-unauthenticated
opcional permite que você acesse a função
sem autenticação.
Testar a função implantada
Depois que a função for implantada, observe a propriedade
uri
na saída do comandogcloud functions deploy
ou recupere-a com o seguinte comando:gcloud functions describe csharp-http-function \ --region=REGION
Substitua REGION pelo nome da região do Google Cloud em que você implantou a função (por exemplo,
us-west1
).Acesse
http://localhost:8080
em um navegador ou executecurl localhost:8080
em outra janela para testar sua função.Saiba mais em Como enviar solicitações para funções locais.
Conferir os registros da função
Conferir os registros com a ferramenta de linha de comando
É possível analisar os registros da função com a IU do Cloud Logging ou por meio da Google Cloud CLI.
Para ver os registros da função com a CLI gcloud, use o
comando
logs read
:
gcloud functions logs read \
--gen2 \
--limit=10 \
--region=REGION \
csharp-http-function
Substitua REGION pelo nome da região do Google Cloud em que você implantou a função
(por exemplo, us-west1
).
A saída será assim:
LEVEL: I
NAME: my-first-function
TIME_UTC: 2023-06-01 12:47:42.221
LOG: Request finished HTTP/1.1 GET http://my-first-function-l5vqvupfzq-uw.a.run.app/favicon.ico - - - 404 0 - 0.9393ms
LEVEL: I
NAME: my-first-function
TIME_UTC: 2023-06-01 12:47:42.220
LOG: Request starting HTTP/1.1 GET http://my-first-function-l5vqvupfzq-uw.a.run.app/favicon.ico - -
Conferir os registros com o painel do Logging
Para ver os registros da função com o painel do Logging, abra a página de visão geral do Cloud Run functions e clique no nome da função na lista. Em seguida, clique na guia Registros.
Criar uma função com o pacote de modelos
Estas instruções ajudaram você a criar uma função simples. Na prática, você provavelmente prefira usar os modelos do Functions Framework para criar as funções.
Para usar os modelos do Functions Framework para criar e testar uma função:
Instale o SDK .NET. Pule esta etapa se estiver usando o Cloud Shell.
Instale o pacote de modelos:
dotnet new install Google.Cloud.Functions.Templates
Crie um diretório para seu projeto e uma função HTTP vazia:
mkdir HelloFunctions cd HelloFunctions dotnet new gcf-http
Isso cria
HelloFunctions.csproj
eFunction.cs
no diretório atual. AbraFunction.cs
para analisar o código e forneça uma mensagem personalizada, se quiser.Como opção, siga as instruções anteriores para criar e testar sua função localmente.
Execute o seguinte comando
gcloud deploy
para implantar a função:gcloud functions deploy HelloFunctions.Function \ --gen2 \ --entry-point=HelloWorld.Function \ --runtime=dotnet6 \ --region=REGION \ --source=. \ --trigger-http \ --allow-unauthenticated
Substitua REGION pelo nome da região do Google Cloud em que você implantou a função (por exemplo,
us-west1
).
Para mais informações sobre o Functions Framework, consulte a documentação dele neste link.