Criar e implantar uma função HTTP do Cloud Run com .NET (1ª geração)

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 acionada por HTTP, que você invoca de solicitações HTTP padrão.
  • Uma função direcionada a eventos, que você usa para processar eventos da infraestrutura do Cloud, como mensagens em um tópico do Pub/Sub ou alterações em um bucket do Cloud Storage.

Antes de começar

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Functions and Cloud Build APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Cloud Functions and Cloud Build APIs.

    Enable the APIs

  8. Instale e inicialize a CLI gcloud.
  9. Atualize e instale os componentes gcloud:
    gcloud components update
  10. Prepare seu ambiente de desenvolvimento.

    Acessar o guia de configuração do .NET

crie uma função

Nesta seção, descrevemos como criar manualmente uma função a partir do zero. Também é possível usar os modelos fornecidos pelo pacote de modelo.

Para criar uma função:

  1. 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
    
  2. Crie um arquivo chamado Function.cs com o conteúdo abaixo:

    using Google.Cloud.Functions.Framework;
    using Microsoft.AspNetCore.Http;
    using System.Threading.Tasks;
    
    namespace HelloWorld;
    
    public class Function : IHttpFunction
    {
        public async Task HandleAsync(HttpContext context)
        {
            await context.Response.WriteAsync("Hello World!", context.RequestAborted);
        }
    }

    Esta função de exemplo gera a saudação "Hello World!"

Especificar as dependências

A próxima etapa é configurar as dependências: É possível configurar dois tipos diferentes de dependências no C# de funções do Cloud Run:

Para disponibilizar o Functions Frameworks, altere o diretório para o diretório helloworld criado acima:

     cd ~/helloworld

Em seguida, crie um arquivo chamado HelloWorld.csproj com o conteúdo abaixo:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Google.Cloud.Functions.Hosting" Version="2.2.1" />
  </ItemGroup>
</Project>

Implantar a função

Para implantar a função com um gatilho HTTP, execute o seguinte comando no diretório helloworld:

gcloud functions deploy --no-gen2 my-first-function --entry-point HelloWorld.Function --runtime dotnet6 --trigger-http --allow-unauthenticated

em que my-first-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).

Testar a função de implantação

  1. Quando a implantação da função estiver concluída, anote a propriedade httpsTrigger.url ou encontre-a usando o seguinte comando:

    gcloud functions describe my-first-function
    

    A aparência será semelhante a esta:

    https://GCP_REGION-PROJECT_ID.cloudfunctions.net/my-first-function
  2. Visite este URL no navegador. Você verá uma mensagem Hello World!.

Ver registros

Os registros do Cloud Run functions são visíveis usando a CLI do Google Cloud e na interface do Cloud Logging.

Usar a ferramenta de linha de comando

Para ver os registros da função com a ferramenta gcloud CLI, use o comando logs read, seguido pelo nome da função:

gcloud functions logs read my-first-function

A saída será semelhante a esta:

LEVEL  NAME               EXECUTION_ID  TIME_UTC                 LOG
D      my-first-function  k2bqgroszo4u  2020-07-24 18:18:01.791  Function execution started
D      my-first-function  k2bqgroszo4u  2020-07-24 18:18:01.958  Function execution took 168 ms, finished with status code: 200
...

Usar o painel do Logging

Também é possível ver os registros do Cloud Run functions no console do Google Cloud.

Usar o pacote de modelos

As seções acima informam como criar manualmente uma função a partir do zero. De agora em diante, você provavelmente usará modelos para criar novas funções.

Para usar modelos para criar, compilar e testar uma função:

  1. Instale o SDK .NET.

  2. Instale o pacote de modelos:

    dotnet new install Google.Cloud.Functions.Templates
    
  3. Em seguida, crie um diretório para o projeto e use dotnet new para criar uma nova função HTTP:

    mkdir HelloFunctions
    cd HelloFunctions
    dotnet new gcf-http
    

    Isso cria HelloFunctions.csproj e Function.cs no diretório atual. Abra Function.cs para analisar o código e forneça uma mensagem personalizada, se quiser.

  4. Crie a função localmente, da seguinte maneira:

    dotnet run
    
  5. Quando o servidor estiver em execução, acesse http://localhost:8080 para invocar a função. Pressione Ctrl-C no console para interromper o servidor.

    Essa função exibirá a mensagem "Hello Functions Framework".

Como alternativa, envie solicitações para essa função usando curl de outra janela de terminal:

curl localhost:8080
# Output: Hello Functions Framework