1. Przegląd

Dzięki Cloud Functions możesz pisać proste, jednozadaniowe funkcje, które są powiązane ze zdarzeniami generowanymi przez infrastrukturę i usługi chmury. Utworzona funkcja jest wywoływana w momencie wystąpienia obserwowanego zdarzenia. Kod jest wykonywany w całkowicie zarządzanym środowisku. Nie trzeba udostępniać infrastruktury ani zarządzać serwerami.
Funkcje w Cloud Functions można obecnie tworzyć w językach JavaScript, Python i Go. W przypadku języka JavaScript są one wykonywane w środowisku Node.js na platformie Google Cloud Platform. Własne funkcje w Cloud Functions można uruchamiać w dowolnym standardowym środowisku wykonawczym Node.js, co ułatwia przenośność i lokalne testowanie.
Nawiązywanie połączenia z usługami w chmurze i rozszerzanie ich możliwości
Cloud Functions udostępnia warstwę połączenia logiki, dzięki której można pisać kod umożliwiający nawiązywanie połączenia z usługami w chmurze i rozszerzanie ich możliwości. Sprawdzaj ruch i reaguj na przesłanie pliku do Cloud Storage, zmianę danych w dzienniku lub wiadomość przychodzącą w temacie Cloud Pub/Sub. Cloud Functions rozszerza możliwości używanych usług w chmurze i pozwala na obsługę rosnącej liczby przypadków użycia za pomocą dowolnych języków programowania. Środowisko Cloud Functions ma dostęp do danych logowania na konto usługi Google, dzięki czemu jest bezproblemowo uwierzytelniane w większości usług Google Cloud Platform, takich jak Datastore, Cloud Spanner, Cloud Translation API, Cloud Vision API i wielu innych.

Zdarzenia i aktywatory
Zdarzenia w chmurze to rzeczy, które mają miejsce w środowisku chmury.Może to być na przykład zmiana danych w bazie danych, dodanie plików do systemu przechowywania danych lub utworzenie nowej instancji maszyny wirtualnej.
Zdarzenia występują niezależnie od tego, czy na nie zareagujesz. Odpowiedź na zdarzenie tworzy się za pomocą aktywatora. Aktywator to deklaracja zainteresowania pewnym zdarzeniem lub zbiorem zdarzeń. Powiązanie funkcji z aktywatorem umożliwia przechwytywanie zdarzeń i reagowanie na nie. Więcej informacji o tworzeniu aktywatorów i wiązaniu ich z funkcjami znajdziesz w artykule Events and Triggers (Zdarzenia i aktywatory).
Technologia bezserwerowa
Dzięki Cloud Functions nie trzeba zarządzać serwerami, konfigurować oprogramowania, aktualizować platform ani łatać systemów operacyjnych. Oprogramowanie i infrastruktura są w pełni zarządzane przez Google, więc Twoim zadaniem jest tylko dodać kod. Oprócz tego udostępnianie zasobów odbywa się automatycznie w odpowiedzi na zdarzenia. Oznacza to, że funkcja może być skalowana od kilku do wielu milionów wywołań dziennie bez żadnego nakładu pracy z Twojej strony.
Przypadki użycia
Zadania asynchroniczne, na przykład proste procesy ETL czy zautomatyzowane działania w chmurze, takie jak aktywowanie kompilacji aplikacji, nie wymagają już specjalnego serwera ani zaangażowania programisty. Wystarczy po prostu wdrożyć funkcję utworzoną w Cloud Functions i powiązać ją z wybranym zdarzeniem.
Dzięki szczegółowości i gotowości do działania na żądanie środowisko Cloud Functions jest również doskonałym rozwiązaniem do tworzenia prostych interfejsów API i webhooków. Dodatkowo podczas wdrażania funkcji HTTP następuje automatyczne udostępnianie punktów końcowych HTTP, więc nie trzeba wykonywać skomplikowanych czynności konfiguracyjnych wymaganych w przypadku niektórych innych usług.
Z tego modułu praktycznego dowiesz się, jak utworzyć funkcję w Cloud Functions, wdrożyć ją i przetestować, używając konsoli Google Cloud. W ramach ćwiczenia :
- utworzenie funkcji w Cloud Functions,
- wdrożenie i przetestowanie funkcji,
- Wyświetl logi
2. Konfiguracja i wymagania
Samodzielne konfigurowanie środowiska
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. (Jeśli nie masz jeszcze konta Gmail lub G Suite, musisz je utworzyć).
Zapamiętaj identyfikator projektu, czyli unikalną nazwę we wszystkich projektach Google Cloud (podana powyżej nazwa jest już zajęta i nie będzie działać w Twoim przypadku). W dalszej części tego laboratorium będzie on nazywany PROJECT_ID.
- Następnie musisz włączyć rozliczenia w konsoli Cloud, aby korzystać z zasobów Google Cloud.
Ukończenie tego laboratorium nie powinno wiązać się z dużymi kosztami, a nawet z żadnymi. Wykonaj instrukcje z sekcji „Czyszczenie”, w której znajdziesz informacje o tym, jak wyłączyć zasoby, aby uniknąć naliczenia opłat po zakończeniu tego samouczka. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
Google Cloud Shell
Z Google Cloud i Cloud Functions można korzystać zdalnie na laptopie, ale w tym module użyjemy Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.
Ta maszyna wirtualna oparta na Debianie zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. Oznacza to, że do ukończenia tego ćwiczenia potrzebujesz tylko przeglądarki (działa ona na Chromebooku).
- Aby aktywować Cloud Shell w konsoli Cloud, kliknij Aktywuj Cloud Shell
(udostępnienie środowiska i połączenie się z nim powinno zająć tylko kilka chwil).
Po połączeniu z Cloud Shell zobaczysz, że uwierzytelnianie zostało już przeprowadzone, a projekt jest już ustawiony na Twój identyfikator projektu PROJECT_ID.
gcloud auth list
Wynik polecenia
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
Wynik polecenia
[core] project = <PROJECT_ID>
Jeśli z jakiegoś powodu projekt nie jest ustawiony, po prostu wydaj to polecenie:
gcloud config set project <PROJECT_ID>
Szukasz urządzenia PROJECT_ID? Sprawdź, jakiego identyfikatora użyto w krokach konfiguracji, lub wyszukaj go w panelu konsoli Cloud:
Cloud Shell domyślnie ustawia też niektóre zmienne środowiskowe, które mogą być przydatne podczas wykonywania kolejnych poleceń.
echo $GOOGLE_CLOUD_PROJECT
Wynik polecenia
<PROJECT_ID>
- Na koniec ustaw domyślną strefę i konfigurację projektu.
gcloud config set compute/zone us-central1-f
Możesz wybrać różne strefy. Więcej informacji znajdziesz w artykule Regiony i strefy.
3. Tworzenie funkcji
Ten krok polega na utworzeniu funkcji w Cloud Functions z wykorzystaniem konsoli.
- W konsoli kliknij Menu nawigacyjne > Cloud Functions.

- Kliknij „UTWÓRZ FUNKCJĘ”:

- Nazwij funkcję
GCFunctioni zachowaj inne ustawienia domyślne : alokacja pamięci, HTTP jako aktywator, edytor wbudowany, domyślne środowisko wykonawcze i domyślny przykładowy kod.

- Pozostań w oknie „Tworzenie funkcji” i kliknij u dołu „Utwórz”, aby wdrożyć funkcję:

Po kliknięciu Utwórz konsola przekieruje Cię na stronę Podsumowanie funkcji w Cloud Functions.
Podczas wdrażania funkcji kręci się mała ikona wskaźnika postępu. Po wdrożeniu spinner zmieni się w zieloną ikonę potwierdzenia. Jeśli wystąpią problemy, zobaczysz czerwoną ikonę i link do logów, aby dowiedzieć się, co poszło nie tak (prawdopodobnie problem z kodem).

To wszystko. Funkcja jest teraz aktywna i gotowa do aktywowania przez HTTP.
4. Testowanie funkcji
Na stronie z podsumowaniem funkcji w Cloud Functions wyświetl menu swojej funkcji i kliknij Przetestuj funkcję :

W polu Zdarzenie aktywujące wpisz następujący tekst w nawiasach klamrowych {} i kliknij Przetestuj funkcję.
W polu Wyniki powinien się pojawić komunikat: Sukces: Hello World!.
W polu Logi kod stanu 200 oznacza sukces. Pamiętaj, że pojawienie się dzienników może potrwać minutę.

5. Wyświetlanie logów funkcji
Kliknij niebieską strzałkę, aby wrócić na stronę z podsumowaniem funkcji w Cloud Functions :

Wyświetl menu swojej funkcji i kliknij Wyświetl logi :

Oto przykład historii logów :

Pamiętaj, że możesz filtrować logi według funkcji i poziomu ważności oraz wyszukiwać je za pomocą etykiety lub dowolnego tekstu.
Twoja aplikacja została wdrożona i przetestowana. Możesz też wyświetlać logi.
6. Czyszczenie zasobów
Nie musisz czyścić zasobów, ponieważ jest to bezserwerowe przetwarzanie danych – skalowanie do zera oznacza też skalowanie kosztów do zera. Jeśli Twoja funkcja nie generuje ruchu, nie poniesiesz żadnych kosztów. Pierwsze 2 miliony wywołań funkcji w Cloud Functions w każdym miesiącu są bezpłatne. Więcej informacji znajdziesz na stronie z cennikiem.
Jeśli chcesz usunąć funkcję, przejdź na stronę przeglądu, wybierz funkcję i kliknij USUN.

7. Co dalej?
Cloud Functions ma dla Ciebie o wiele więcej! Zapoznaj się z innymi ćwiczeniami z programowania oraz stroną produktu i jego dokumentacją.
Zapoznaj się też z tymi materiałami :
- Wywoływanie funkcji w Cloud Functions (aktywatory dostępne do wywoływania funkcji)
- Monitorowanie Cloud Functions (logi, raportowanie błędów i inne)
- … lub więcej codelabów z kategorii Bezserwerowe.