O Cloud Functions é um serviço serverless, escalonável e de pagamento por utilização e execução, onde você não precisa gerenciar servidores. É perfeito para uma arquitetura de microserviços onde você tem um serviço leve e que execute rápido.
Você pode usá-lo para fazer deploy de uma função, como o nome diz. É possível fazer envio de emails, APIs REST, integrar com serviços de terceiros, IoT, etc. Tem suporte para as seguintes linguagens: Node.JS
, Go
, Python
e Java
.
Essa é a documentação oficial do Fuctions.
Usarei uma API que returna um Hello Heart escrito em Go, você pode vê-la aqui.
Você pode rodar o exemplo da seguinte forma:
go run hello-heart-rest.go
E acesse o endereço localhost:8080 no seu navegador.
Para usar o Functions, antes você deve ativar os serviços do Cloud Functions API e Cloud Build API no seu projeto:
gcloud services enable cloudfunctions.googleapis.com cloudbuild.googleapis.com
No código exemplo, pereca que o nome da função é HelloHeart
. Esse será o nome da nossa functions.
package helloworld
import (
"fmt"
"net/http"
)
// HelloHeart is an HTTP Cloud Function.
func HelloHeart(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hello, He4rt!")
}
Vá até a pasta do seu código e rode o seguinte comando para fazer deploy:
gcloud functions deploy HelloHeart --runtime go111 --trigger-http --allow-unauthenticated
No parametro --runtime
, depende da linguagem que você esta usando. Essas são as opções:
Nodejs:
-
nodejs10
-
nodejs12
Python:
-
python37
-
python38
Go:
-
go111
-
go113
O paramêtro --allow-unauthenticated
permite que você acesse a função sem autenticação. Para exigir autenticação, remova o paramêtro.
Após rodar o comando, ele retornará um log dessa forma:
$ gcloud functions deploy HelloHeart --runtime go111 --trigger-http --allow-unauthenticated
Deploying function (may take a while - up to 2 minutes)...
done.
availableMemoryMb: 256
entryPoint: HelloHeart
httpsTrigger:
url: https://us-central1-heart-exemplo.cloudfunctions.net/HelloHeart
Acesse essa URL no seu navegador e pronto! Seu código esta em produção.
Se você usa dependências externas, você pode fazer da seguinte forma:
Para Python
, crie um arquivo requirements.txt
com suas dependências. Você pode criar esse arquivo com o comando:
pip3 freeze > requirements.txt
Em Node.js
, basta ter o package.json
no mesmo diretório.
Em Go
, basta ter o arquivo go.mod
no mesmo diretório. Você pode crir esse arquivo com o comando:
go mod init hello-heart-rest.go
Para deletar o projeto, rode o seguinte comando:
gcloud functions delete HelloHeart
No próximo capítulo vamos criar ver sobre Cloud Run.