Wprowadzenie do funkcji Cloud Run (HTTP)

1. Wprowadzenie

Omówienie

Funkcje Cloud Run to nowy sposób wdrażania zadań przy użyciu znanych paradygmatów zdarzeń GCF i podpisu funkcji. Zamiast korzystać z naszego sprawdzonych procesów kompilacji i konfiguracji wdrożenia, funkcje Cloud Run zapewniają bezpośrednią kontrolę nad bazową usługą utworzoną w Cloud Run.

Dzięki funkcjom Cloud Run zapewniamy prosty UX wdrożenia źródła Cloud Run, dając programistom pełną kontrolę nad zadaniami za pomocą konfiguracji Cloud Run.

W tym ćwiczeniu w Codelabs używane są przykłady Nodejs w poniższych przykładach. Możesz jednak skorzystać z przykładowych kodów Cloud Functions 2 generacji w wybranym języku:

Czego się nauczysz

  • Jak wdrożyć funkcję Cloud Run aktywowaną przez żądanie HTTP

2. Ustawianie zmiennych środowiskowych i Włączanie interfejsów API

Uaktualnij interfejs wiersza poleceń gcloud

Najpierw musisz mieć zainstalowaną najnowszą wersję gcloud CLI. Interfejs wiersza poleceń możesz zaktualizować, uruchamiając to polecenie:

gcloud components update

Skonfiguruj zmienne środowiskowe

Możesz ustawić zmienne środowiskowe, które będą używane podczas tego ćwiczenia z programowania.

PROJECT_ID=<YOUR_PROJECT_ID>
REGION=<YOUR_REGION, e.g. us-central1>

gcloud config set project $PROJECT_ID
SERVICE_NAME=crf-http-codelab

Włącz interfejsy API

Zanim zaczniesz korzystać z tego ćwiczenia z programowania, musisz włączyć kilka interfejsów API. To ćwiczenie w Codelabs wymaga używania poniższych interfejsów API. Możesz włączyć te interfejsy API, uruchamiając to polecenie:

gcloud services enable run.googleapis.com \
    cloudbuild.googleapis.com \
    storage.googleapis.com \
    artifactregistry.googleapis.com

3. Tworzenie funkcji HTTP

Najpierw utwórz katalog na kod źródłowy i cd w tym katalogu.

mkdir -p cloud-run-functions/$SERVICE_NAME && cd $_

Następnie utwórz plik package.json z tą zawartością:

{
    "dependencies": {
        "@google-cloud/functions-framework": "^3.0.0"
    }
}

Następnie utwórz plik index.js z tą zawartością:

const functions = require("@google-cloud/functions-framework");

functions.http("helloHttp", (req, res) => {
    res.send(`Hello ${req.query.name || req.body.name || "World"}!`);
});

4. Wdrażanie funkcji

Teraz możesz wdrożyć funkcję Cloud Run, uruchamiając to polecenie:

gcloud beta run deploy $SERVICE_NAME \
      --source . \
      --function helloHttp \
      --region us-central1 \
      --no-allow-unauthenticated

To polecenie używa buildpacks, aby przekształcić kod źródłowy funkcji w obraz kontenera gotowy do wykorzystania w środowisku produkcyjnym.

Uwaga:

  • flaga –source jest używana do tego, aby usługa Cloud Run skompilowała funkcję w uruchomionej usłudze opartej na kontenerze
  • flaga –funkcja (nowa) jest używana do ustawienia punktu wejścia nowej usługi jako podpisu funkcji, która ma być wywoływana.
  • (opcjonalnie) atrybut –no-allow-unauthenticated w celu uniemożliwienia publicznego wywołania funkcji

5. Testowanie funkcji

Po zakończeniu wdrażania zobaczysz adres URL usługi. Aby wywołać funkcję, musisz wysłać uwierzytelnione żądanie z Twoim tokenem tożsamości lub tokenem tożsamości podmiotu, który ma przypisaną rolę wywołującego Cloud Run, jak pokazano poniżej:

# get the Service URL
SERVICE_URL="$(gcloud run services describe $SERVICE_NAME --region us-central1 --format 'value(status.url)')"

# invoke the service
curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET $SERVICE_URL

6. Gratulacje!

Gratulujemy ukończenia ćwiczeń z programowania.

Zalecamy zapoznanie się z dokumentacją funkcji Cloud Run.

Omówione zagadnienia

  • Jak wdrożyć funkcję Cloud Run aktywowaną przez żądanie HTTP

7. Czyszczenie danych

Aby uniknąć niezamierzonych opłat (na przykład jeśli usługi Cloud Run były wywoływane więcej razy niż przez miesięczny przydział wywołań Cloud Run na poziomie bezpłatnym), możesz usunąć Cloud Run albo projekt utworzony w kroku 2.

Aby usunąć funkcję Cloud Run, otwórz konsolę Cloud Run na stronie https://console.cloud.google.com/run i usuń usługę crf-http-codelab.

Jeśli zdecydujesz się usunąć cały projekt, możesz otworzyć stronę https://console.cloud.google.com/cloud-resource-manager, wybrać projekt utworzony w kroku 2 i kliknąć Usuń. Jeśli usuniesz projekt, musisz zmienić projekty w pakiecie SDK Cloud. Aby wyświetlić listę wszystkich dostępnych projektów, uruchom polecenie gcloud projects list.