1. Omówienie
Ta seria ćwiczeń z programowania (do samodzielnego ukończenia, praktycznych samouczków) ma pomóc deweloperom zapoznać się z różnymi opcjami dostępnymi podczas wdrażania aplikacji. Dowiesz się, jak korzystać z interfejsu Google Cloud Translation API w prostej aplikacji internetowej. Ta aplikacja może być uruchamiana lokalnie lub wdrożona na bezserwerowej platformie obliczeniowej Cloud (App Engine, Cloud Functions, lub Cloud Run).
W tym samouczku JavaScript przećwiczysz Node.js przy użyciu platformy internetowej Express.js. Dowiesz się też, jak uzyskać dostęp do interfejsów Google Cloud APIs z naszych platform bezserwerowych. Wszystkie wersje tej aplikacji pochodzą z modelu „nebulous serverless” repozytorium open source, które zawiera wersję tej aplikacji w języku Python oraz niezależne ćwiczenia z programowania. W repozytorium znajdują się też podobne aplikacje, które pokazują deweloperom, jak uzyskać dostęp do interfejsów API Google spoza Google Cloud z naszych platform bezserwerowych.
To ćwiczenie w Codelabs koncentruje się na wdrażaniu tej aplikacji na pogrubionych platformach.
Dowiesz się,
- Używaj interfejsów Google Cloud APIs, a w szczególności Cloud Translation API (zaawansowane/v3)
- Uruchamiaj podstawową aplikację internetową lokalnie lub wdróż ją na bezserwerowej platformie obliczeniowej w chmurze
Czego potrzebujesz
- projekt Google Cloud z aktywnym kontem rozliczeniowym Cloud.
- Platforma internetowa zainstalowana do uruchamiania lokalnie ( Flask dla osób wykonujących samouczek Pythona lub Express dla osób wykonujących samouczek JavaScript/Node.js)
- Co najmniej jedna bezserwerowa platforma obliczeniowa obsługująca wdrożenia Google Cloud
- podstawowe umiejętności w zakresie programowania (Python lub JavaScript/Node.js),
- praktyczną znajomość podstawowych poleceń systemu operacyjnego;
Ankieta
Jak wykorzystasz ten samouczek?
Jak oceniasz swoje doświadczenie z programowaniem w języku Python lub Node.js?
Jak oceniasz korzystanie z usług Google Cloud?
2. Konfiguracja i wymagania
Samodzielne konfigurowanie środowiska
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub wykorzystaj już istniejący. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.
- Nazwa projektu jest wyświetlaną nazwą uczestników tego projektu. To ciąg znaków, który nie jest używany przez interfejsy API Google i w każdej chwili możesz go zaktualizować.
- Identyfikator projektu musi być unikalny we wszystkich projektach Google Cloud i nie można go zmienić (nie można go zmienić po ustawieniu). Cloud Console automatycznie wygeneruje unikalny ciąg znaków. zwykle nieważne, co ona jest. W większości ćwiczeń w Codelabs musisz odwoływać się do identyfikatora projektu (który zwykle nazywa się
PROJECT_ID
), więc jeśli Ci się nie podoba, wygeneruj kolejny losowy projekt lub wypróbuj swój własny identyfikator i sprawdź, czy jest dostępny. Potem urządzenie jest „zawieszone”. po utworzeniu projektu. - Występuje trzecia wartość – numer projektu – używany przez niektóre interfejsy API. Więcej informacji o wszystkich 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć płatności w konsoli Cloud, aby móc korzystać z zasobów i interfejsów API Cloud. Ukończenie tego ćwiczenia z programowania nie powinno kosztować zbyt wiele. Aby wyłączyć zasoby, aby nie naliczać opłat po zakończeniu tego samouczka, wykonaj czynności „wyczyść” znajdziesz na końcu tego ćwiczenia. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego o wartości 300 USD.
3. Włącz Translation API
W tej sekcji dowiesz się, jak włączyć interfejsy API Google. W przypadku naszej przykładowej aplikacji włączysz interfejs Cloud Translation API. Włączysz też usługi App Engine, Cloud Functions lub Cloud Run (oraz Cloud Artifact Registry), w zależności od tego, na jakich platformach chcesz wdrożyć przykładową aplikację.
Włączanie interfejsów API Google
Wprowadzenie
Niezależnie od tego, którego interfejsu API Google chcesz używać w aplikacji, muszą one być włączone. Interfejsy API można włączać z poziomu wiersza poleceń lub konsoli Cloud. Proces włączania interfejsów API jest identyczny, więc po włączeniu jednego z nich możesz w ten sam sposób włączyć kolejny.
Opcja 1. gcloud
Interfejs wiersza poleceń (Cloud Shell lub środowisko lokalne)
Chociaż włączanie interfejsów API z poziomu konsoli Cloud jest bardziej powszechne, niektórzy deweloperzy wolą robić wszystko z poziomu wiersza poleceń. Aby to zrobić, musisz wyszukać „nazwę usługi” interfejsu API. To wygląda na adres URL: SERVICE_NAME
.googleapis.com
. Znajdziesz je na wykresie obsługiwanych usług. Możesz też automatycznie wysyłać zapytania na ich temat za pomocą interfejsu Google Discovery API.
Dzięki tym informacjom za pomocą Cloud Shell (lub lokalnego środowiska programistycznego z zainstalowanym narzędziem wiersza poleceń gcloud
) możesz włączyć interfejs API w ten sposób:
gcloud services enable SERVICE_NAME.googleapis.com
Przykład 1: włączanie interfejsu Cloud Vision API
gcloud services enable vision.googleapis.com
Przykład 2: włączanie Google App Engine
gcloud services enable appengine.googleapis.com
Przykład 3: włączenie wielu interfejsów API za pomocą jednego żądania. Jeśli na przykład w ramach tego ćwiczenia w Codelabs znajdują się osoby wdrażające aplikację za pomocą interfejsu Cloud Translation API w App Engine, Cloud Functions i Cloud Run, wiersz poleceń będzie wyglądać tak:
gcloud services enable appengine.googleapis.com cloudfunctions.googleapis.com artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com
To polecenie włącza platformy App Engine, Cloud Functions, Cloud Run i Cloud Translation API. Dodatkowo umożliwia korzystanie z Cloud Artifact Registry, ponieważ tam też obrazy kontenerów muszą być zarejestrowane przez system Cloud Build, aby możliwe było wdrożenie w Cloud Run.
Opcja 2. Konsola Cloud
Interfejsy API Google możesz też włączyć w menedżerze interfejsów API. W konsoli Google Cloud otwórz Menedżera interfejsów API i wybierz Bibliotekę.
Zacznij wpisywać nazwę interfejsu API w pasku wyszukiwania, aby wyświetlić pasujące wyniki:
Wybierz interfejs API, który chcesz włączyć, i kliknij przycisk Włącz:
Proces włączania wszystkich interfejsów API przebiega podobnie niezależnie od tego, którego interfejsu API Google chcesz używać.
Koszt
Wielu interfejsów API Google można używać bez opłat, jednak korzystanie z większości interfejsów API i usług Google Cloud wiąże się z pewnymi kosztami. Podczas włączania Cloud APIs może pojawić się prośba o podanie aktywnego konta rozliczeniowego. Jednak niektóre usługi Google Cloud mają atrybut „Zawsze bezpłatne” tier, który musisz przekroczyć, aby naliczać opłaty.
Nowi użytkownicy GCP kwalifikują się do skorzystania z bezpłatnego okresu próbnego. Obecnie cena wynosi 300 USD przez pierwsze 90 dni. Ćwiczenia z programowania zazwyczaj nie wiążą się z żadnymi opłatami, dlatego zalecamy, aby wstrzymać się z bezpłatnym okresem próbnym, dopóki nie zdecydujesz się na wypróbowanie go, zwłaszcza że jest to oferta jednorazowa. Limity poziomu bezpłatnego nie wygasają i nie mają zastosowania niezależnie od tego, czy korzystasz z bezpłatnego okresu próbnego.
Przed włączeniem interfejsu API użytkownicy powinni zapoznać się z informacjami o cenach dowolnego interfejsu API (np. stronie z cennikiem Cloud Vision API ), szczególnie zwracając uwagę na to, czy jest to poziom bezpłatny, a jeśli tak, to co to jest. Dopóki nie zmieścisz się w ustalonych limitach dziennych lub miesięcznych, nie poniesiesz żadnych opłat. Ceny i poziomy bezpłatne różnią się w zależności od interfejsów API grup produktów Google. Przykłady:
- Google Cloud/GCP – każda usługa jest rozliczana w inny sposób i zwykle jest pobierana z płatności za wykorzystanie; zobacz informacje o poziomie bezpłatnym powyżej.
- Mapy Google – obejmują pakiet interfejsów API i oferują użytkownikom bezpłatne środki w wysokości 200 USD miesięcznie.
- Interfejsy API Google Workspace (dawniej G Suite) – zapewniają wykorzystanie (do pewnych limitów) pokryte miesięczną opłatą za subskrypcję Workspace. Nie ma więc bezpośrednich płatności za używanie interfejsów API w aplikacjach takich jak Gmail, Dysk Google, Kalendarz, Dokumenty, Arkusze czy Prezentacje.
Różne usługi Google są rozliczane w różny sposób, dlatego zapoznaj się z odpowiednią dokumentacją.
Sprawdzanie, czy wybrane usługi są włączone
Sprawdź w Menedżerze interfejsów API interfejs Cloud Translation API zgodnie z opisem powyżej. Jeśli platformy bezserwerowe nie zostały włączone z poziomu wiersza poleceń, możesz to zrobić z poziomu każdego z odpowiednich paneli w konsoli Cloud: App Engine, Cloud Functions, Cloud Run.
Chociaż włączenie interfejsów API z poziomu konsoli Cloud jest rzeczą pożyteczną, warto skorzystać z narzędzia gcloud
, które włącza wszystkie usługi w kilka sekund:
$ gcloud services enable appengine.googleapis.com \ cloudfunctions.googleapis.com artifactregistry.googleapis.com \ run.googleapis.com translate.googleapis.com Operation "operations/acf.p2-xxxxxx035451-704918f2-5470-4436-9bdd-c3b204yyyyyy" finished successfully.
Więcej informacji o kosztach
Powyższa sekcja dotycząca kosztów dotyczy ogólnych interfejsów API Google. Bardziej szczegółowe informacje o tym samouczku Miesięczny limit nie jest wymieniony w ogólnym ustawieniu „Zawsze bezpłatne” strony podsumowania poziomu, na stronie z cennikiem interfejsu Translation API znajdziesz informację, że wszyscy użytkownicy otrzymują co miesiąc stałą liczbę przetłumaczonych znaków. Jeśli nie przekroczysz tego progu, interfejs API nie będzie ponosić żadnych opłat. Więcej informacji o kosztach związanych z korzystaniem z platform bezserwerowych Google Cloud znajdziesz w sekcji dotyczącej kosztów tego repozytorium. Ekran „Wyczyść” Omówimy, jak zatrzymać naliczanie płatności po ukończeniu tego ćwiczenia.
4. Pobieranie przykładowego kodu aplikacji
Pobierz plik ZIP lub skopiuj repozytorium
- Pobierz plik ZIP lub skopiuj repozyto za pomocą usługi
git clone https://github.com/googlecodelabs/cloud-nebulous-serverless.git
. - Jeśli nie masz lokalnego środowiska programistycznego, ale chcesz skorzystać z tego samouczka w Cloud Shell, możesz skopiować repozytorium za pomocą tego samego polecenia
git clone
. - Dostęp do pliku ZIP możesz też uzyskać, klikając zielony przycisk Kod, tak jak na tym zrzucie ekranu:
Teraz gdy masz już wszystko, utwórz pełną kopię folderu, aby wykonać ten konkretny samouczek, ponieważ prawdopodobnie będzie się wiązało z usunięciem lub zmianą plików. Jeśli chcesz przeprowadzić inne wdrożenie, możesz zacząć od nowa, kopiując oryginał, bez konieczności klonowania ani pobierania ponownie.
5. Potwierdź środowisko Node.js
Aby skonfigurować środowisko Node.js:
- Sprawdź, czy masz zainstalowane nowoczesne wersje Node (>=10) i NPM (>=6)
- Przejdź do miejsca, w którym sklonowano repozyto (lub rozpakowano plik ZIP), a następnie przejdź do folderu
cloud/nodejs
. - Potwierdź obecność pliku
package.json
, a następnie uruchom polecenienpm install
W przypadku punktu 1 powyżej możesz sprawdzić, jakie wersje masz, za pomocą wiersza poleceń:
$ node -v v17.0.1 $ npm -v 8.1.0
6. Prezentacja przykładowej aplikacji
Przykładowa aplikacja to prosta pochodna w Tłumaczu Google, która wyświetla użytkownikowi prośbę o wpisanie tekstu w języku angielskim i otrzymanie odpowiadającego mu tłumaczenia tego tekstu w języku hiszpańskim.
Plik konfiguracji package.json
zawiera informacje o tym, które pakiety innych firm są wymagane przez daną aplikację (pamiętaj, że wersje pakietu mogą być aktualizowane poza wymienionymi tutaj):
{
"name": "cloud-nebulous-serverless-nodejs",
"version": "0.0.1",
"description": "Nebulous Serverless sample app",
"main": "index.js",
"scripts": {
"start": "node index.js",
"test": "mocha test/test_neb.js"
},
"author": "Google LLC",
"license": "Apache-2.0",
"dependencies": {
"@google-cloud/translate": "^6.3.1",
"express": "^4.17.1",
"nunjucks": "^3.2.3"
},
"devDependencies": {
"mocha": "^9.1.3",
"supertest": "^6.1.6"
}
}
Teraz otwórz plik index.js
i sprawdźmy, jak to działa. Pomijając komentarze dotyczące licencjonowania, u góry i na dole strony wygląda tak:
const express = require('express');
const nunjucks = require('nunjucks');
const {TranslationServiceClient} = require('@google-cloud/translate');
const app = express();
app.use(express.urlencoded({extended: true}));
nunjucks.configure('templates', {autoescape: true, express: app});
const TRANSLATE = new TranslationServiceClient();
const PORT = process.env.PORT || 8080;
const SOURCE = ['en', 'English'];
const TARGET = ['es', 'Spanish'];
let parent;
TRANSLATE.getProjectId().then(result => {
parent = `projects/${result}`;
});
if (!process.env.FUNCTION_TARGET) {
app.listen(PORT, () =>
console.log(`Listening on port ${PORT}`)
);
}
# . . . [translate() function definition] . . .
app.all('/', translate);
module.exports = {
app
};
require
zawierają platformę i szablony oraz bibliotekę klienta Cloud Translation API.- Zmienne globalne reprezentują aplikację internetową, identyfikator projektu Cloud, klienta Translation API i nadrzędną „ścieżkę lokalizacji” dla wywołań interfejsu Translation API oraz języków
SOURCE
iTARGET
. W tym przypadku są to angielskie (en
) i hiszpański (es
), ale możesz je też zmienić na inne kody języków obsługiwane przez Cloud Translation API. - Pierwszym elementem każdej pary (
SOURCE
iTARGET
) jest kod języka, a drugi to nazwa języka (i używana tylko do wyświetlania, ponieważ nie ma związku z interfejsem API). - Kilka wierszy na dole służy do wysłania wszystkich żądań HTTP do
translate()
, a następnie do wyeksportowania obiektu aplikacjiapp
.
I ostatnio, w środku index.js
, stanowi serce aplikacji, funkcja translate()
:
async function translate(req, rsp) {
let text = null;
let translated = null;
if (req.method === 'POST') {
text = req.body.text.trim();
if (text) {
const data = {
contents: [text],
parent: parent,
targetLanguageCode: TARGET[0]
};
const [response] = await TRANSLATE.translateText(data);
translated = response.translations[0].translatedText;
}
}
const context = {
orig: {text: text, lc: SOURCE},
trans: {text: translated, lc: TARGET}
};
rsp.render('index.html', context);
}
Funkcja podstawowa pobiera dane wejściowe użytkownika i wywołuje interfejs Translation API w celu wykonania najtrudniejszych zadań. Przyjrzyjmy się im:
- Zresetuj podstawowe zmienne formularza. Dotyczy to głównie żądań GET, ponieważ żądania POST zawierają dane, które je zastępują.
- W przypadku żądania POST skopiuj tekst do przetłumaczenia. Jeśli nie jest on pusty, utwórz strukturę JSON reprezentującą wymagania dotyczące metadanych interfejsu API. Następnie wywołaj interfejs API dla usługi.
- Nie przekazaliśmy kodu
SOURCE[0]
do interfejsu API do określonego źródła w języku angielskim. Jeśli pominiesz język źródłowy, żądasz, aby interfejs API automatycznie wykrywał język źródłowy (patrzsourceLanguageCode
w tej dokumentacji). - Niezależnie od tego formatuj rzeczywiste wyniki (POST) lub brak danych (GET) w kontekście szablonu i wyrenderuj.
Wizualną część aplikacji znajduje się w pliku szablonu index.html
. Wyświetlą się wszystkie przetłumaczone wcześniej wyniki (jeśli nie będą puste), a po nich pojawi się formularz z prośbą o tłumaczenie:
<!doctype html>
<html><head><title>My Google Translate 1990s</title><body>
<style>
body {
font-family: Verdana, Helvetica, sans-serif;
background-color: #DDDDDD;
}
</style>
<h2>My Google Translate (1990s edition)</h2>
{% if trans['text'] %}
<h4>Previous translation</h4>
<li><b>Original</b>: {{ orig['text'] }} (<i>{{ orig['lc'][0] }}</i>)</li>
<li><b>Translated</b>: {{ trans['text'] }} (<i>{{ trans['lc'][0] }}</i>)</li>
{% endif %}
<h4>Enter <i>{{ orig['lc'][1] }}</i> text to translate to <i>{{ trans['lc'][1] }}</i>:</h4>
<form method="POST"><input name="text"><input type="submit"></form>
</body></html>
W pozostałej części samouczka możesz wybrać dowolne lub wszystkie z 4 opcji wdrażania i uruchamiania tej aplikacji. Wszystkie wdrożenia są opcjonalne, co oznacza, że możesz wykonać wszystkie lub tylko niektóre z nich.
- Uruchamianie usługi lokalnie
- Wdróż w App Engine (środowisko standardowe)
- Wdrażanie w Cloud Functions
- Wdrożenie w Cloud Run
7. OPCJA 1. Uruchom usługę lokalnie
Ta sekcja ćwiczeń z programowania jest przeznaczona tylko do uruchamiania lokalnie. Jeśli wdrażasz to rozwiązanie tylko w chmurze, przejdź do następnej sekcji.
Aby uruchomić przykładową aplikację lokalnie, musisz wykonać 3 różne kroki:
- Tworzenie konta usługi
- Tworzenie pary kluczy (publicznego i prywatnego) konta usługi
- Pobierz plik z danymi logowania i połącz go z kodem aplikacji
- Uruchom usługę
Więcej informacji o kontach usługi
Konta usługi to mechanizm zabezpieczający, który zapewnia dostęp do interfejsów API Google dla aplikacji działających w chmurze w przypadku uzyskiwania dostępu do danych, które nie należą do użytkowników. Podczas wdrażania w chmurze wszystkie platformy obliczeniowe Google Cloud (bezserwerowe i inne) udostępniają domyślne konta usługi, co pozwala skrócić czas potrzebny na rozpoczęcie korzystania z tej usługi.
Domyślne konta usługi mają szeroki zestaw uprawnień, które „obniżają” koszty, ale gdy przygotowuje się do wprowadzenia usługi produkcyjnej, zdecydowanie zalecamy użytkownikom stosowanie sprawdzonej metody „jak najmniejszych uprawnień”, ale utworzenie kont usługi zarządzanych przez użytkowników z wystarczającymi uprawnieniami do prawidłowego działania aplikacji. Niezależnie od tego nie ma żadnych domyślnych kont usługi dla wdrożeń lokalnych, dlatego musisz utworzyć konto usługi i klucz konta usługi (w rzeczywistości to para kluczy publiczny/prywatny) i udostępnić te dane logowania w kodzie aplikacji.
Tworzenie pary kluczy konta usługi i pobieranie pliku danych logowania
Postępuj zgodnie z instrukcjami na tej stronie, aby utworzyć konto usługi oraz parę kluczy (publiczny i prywatny) na potrzeby lokalnego uruchomienia. Podczas tworzenia klucza konta usługi pojawi się prośba o przyznanie odpowiednich uprawnień. Aby mieć dostęp do interfejsu API, wybierz roles/cloudtranslate.user
.
Po utworzeniu pary kluczy pojawi się prośba o pobranie pliku kluczy konta usługi. Nadaj mu nazwę credentials.json
i przenieś do folderu najwyższego poziomu aplikacji. Teraz musisz wskazać pakietowi SDK Cloud, aby używał tych danych logowania i ustaw zmienną środowiskową GOOGLE_APPLICATION_CREDENTIALS
tak, aby wskazywała ten plik. Więcej informacji o tym procesie znajdziesz na tej stronie dotyczącej korzystania z kont usługi.
Uruchamianie usługi
Gdy wszystko będzie gotowe, uruchom lokalnie serwer Express za pomocą tego polecenia:
$ npm start > cloud-nebulous-serverless-nodejs@0.0.1 start > node index.js Listening on port 8080
Otwórz przeglądarkę, aby połączyć się z usługą pod adresem localhost:8080. Strona powinna wyglądać mniej więcej tak:
Przetłumacz coś, aby zobaczyć, jak działa.
Jeśli wszystko działa, jak należy, zakończ działanie serwera, naciskając ^C (control+C) i wyjdź. Gratulujemy uruchomienia lokalnego wdrożenia. Mamy dobrą wiadomość: wdrażanie rozwiązań w chmurze jest znacznie łatwiejsze.
Rozwiązywanie problemów
Czy podczas przesyłania prośby o tłumaczenie pojawia się taki błąd?
node:fs:2486 handleErrorFromBinding(ctx); ^ Error: The file at credentials.json does not exist, or it is not a file. ENOENT: no such file or directory, lstat '/tmp/nodejs/credentials.json' . . .
ROZWIĄŻENIE: ten błąd oznacza, że nie dokończono tworzenia konta usługi i nie udało się pobrać pliku pary kluczy (publicznego i prywatnego) credentials.json
. Wróć do strony OPCJA 1. Uruchom usługę lokalnie i dokończ ten proces. Zanim przejdziesz dalej, zainstaluj creds w folderze głównym.
8. OPCJA 2. Wdróż w App Engine (środowisko standardowe)
Ta sekcja ćwiczenia z programowania jest przeznaczona tylko do wdrażania w Node.js. Jeśli Cię to nie interesuje, przejdź do następnej sekcji.
To wdrożenie korzysta z pliku konfiguracji app.yaml
, który informuje App Engine, którego środowiska wykonawczego ma używać w jednym wierszu:
runtime: nodejs16
Pliku app.yaml
nie używa ani Cloud Functions, ani Cloud Run. Jeśli nie planujesz używać App Engine, ten plik może zostać bezpiecznie usunięty. Gdy wszystko będzie gotowe do wdrożenia w App Engine, uruchom to polecenie:
$ gcloud app deploy
Po wybraniu regionu dane wyjściowe gcloud app deploy
będą znacznie mniej szczegółowe i powinny wyglądać tak:
Services to deploy: descriptor: [/private/tmp/nodejs/app.yaml] source: [/private/tmp/nodejs] target project: [PROJECT_ID] target service: [default] target version: [2021...] target url: [https://PROJECT_ID.REG_ABBR.appspot.com] target service account: [App Engine default service account] Do you want to continue (Y/n)? Beginning deployment of service [default]... ╔════════════════════════════════════════════════════════════╗ ╠═ Uploading 2 files to Google Cloud Storage ═╣ ╚════════════════════════════════════════════════════════════╝ File upload done. Updating service [default]...⠏WARNING: *** Improve build performance by generating and committing package-lock.json. Updating service [default]...done. Setting traffic split for service [default]...done. Deployed service [default] to [https://PROJECT_ID.REG_ABBR.appspot.com] You can stream logs from the command line by running: $ gcloud app logs tail -s default To view your application in the web browser run: $ gcloud app browse To take a quick anonymous survey, run: $ gcloud survey
Teraz, gdy aplikacja jest dostępna na całym świecie, powinna być dostępna pod adresem URL zawierającym identyfikator projektu. Dane wyjściowe powinny wyglądać podobnie do lokalnej wersji Express, ale informacje o tym, że aplikacja działa w chmurze i jest dostępna na całym świecie:
Jeśli prześlesz prośbę, okaże się, że działa ona tak samo jak wszystkie inne wdrożenia.
9. OPCJA 3. Wdróż w Cloud Functions
Ta sekcja ćwiczenia z programowania jest przeznaczona tylko do wdrażania w Node Functions. Jeśli Cię to nie interesuje, przejdź do następnej sekcji.
W Cloud Functions nie ma plików konfiguracji, więc gdy wszystko będzie gotowe do wdrożenia w Cloud Functions, uruchom to polecenie:
$ gcloud functions deploy translate \ --runtime nodejs16 \ --entry-point app \ --trigger-http \ --region REGION \ --allow-unauthenticated
Twój projekt GCP może mieć domyślną wartość REGION
, ale możesz użyć flagi --region
, aby wdrożyć funkcję w określonym regionie. Cloud Functions nie wyświetla promptów tak jak w przypadku innych usług Cloud. Niezależnie od wybranego regionu dane wyjściowe funkcji gcloud functions deploy
powinny wyglądać tak:
Deploying function (may take a while - up to 2 minutes)...⠛ For Cloud Build Logs, visit: https://console.cloud.google.com/cloud-build/builds;region=REGION/15ac7fc1-731d-4f3b-bc15-8f2614xxxxxx?project=062269xxxxxx Deploying function (may take a while - up to 2 minutes)...done. availableMemoryMb: 256 buildId: aaf7e0cd-fbbd-4624-abeb-3e7437xxxxxx buildName: projects/062269xxxxxx/locations/REGION/builds/aaf7e0cd-fbbd-4624-abeb-3e7437xxxxxx entryPoint: app httpsTrigger: securityLevel: SECURE_OPTIONAL url: https://REGION-PROJECT_ID.cloudfunctions.net/translate ingressSettings: ALLOW_ALL labels: deployment-tool: cli-gcloud name: projects/PROJECT_ID/locations/REGION/functions/translate runtime: nodejs16 serviceAccountEmail: PROJECT_ID@appspot.gserviceaccount.com sourceUploadUrl: https://storage.googleapis.com/gcf-upload-REGION-01de94c2-6eb4-4c49-aaff-09276cdb7ae9/a1db9f2d-3511-414b-aeeb-de6042xxxxxx.zip status: ACTIVE timeout: 60s updateTime: '2021...' versionId: '...'
Twoja aplikacja jest teraz dostępna na całym świecie, więc powinna być dostępna pod adresem URL zawierającym identyfikator projektu widoczny w danych wyjściowych wdrożenia (w sekcji „httpsTrigger/url
”). Adres URL powinien wyglądać mniej więcej tak: https://
REGION
-
PROJECT_ID
.cloudfunctions.net/translate
. Może się on różnić w zależności od wybranego regionu i identyfikatora projektu Cloud.
10. OPCJA 4. Wdróż w Cloud Run
Ta sekcja ćwiczeń z programowania jest przeznaczona tylko do wdrażania w Cloud Run. Jeśli Cię to nie interesuje, przejdź do następnej sekcji.
W Cloud Run nie ma plików konfiguracji, więc gdy chcesz wdrożyć konfigurację w Cloud Run, postępuj zgodnie z instrukcjami poniżej.
Teraz możesz wdrożyć usługę tłumaczeniową w Cloud Run, uruchamiając to polecenie:
$ gcloud run deploy translate --source . --allow-unauthenticated --platform managed
Dane wyjściowe powinny wyglądać tak:
Please specify a region: [1] asia-east1 [2] asia-east2 . . . (other regions) . . . [28] us-west4 [29] cancel Please enter your numeric choice: REGION_CHOICE To make this the default region, run `gcloud config set run/region REGION`. Deploying from source requires an Artifact Registry repository to store build artifacts. A repository named [cloud-run-source-deploy] in region [REGION] will be created. Do you want to continue (Y/n)? This command is equivalent to running "gcloud builds submit --pack image=[IMAGE] ." and "gcloud run deploy translate --image [IMAGE]" Building . . . and deploying container to Cloud Run service [translate] in project [PROJECT_ID] region [REGION] ✓ Building and deploying... Done. ✓ Creating Container Repository... ✓ Uploading sources... ✓ Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds/60e1b 9bb-b991-4b4e-8d8a-HASH?project=PROJECT_NUMBER]. ✓ Creating Revision... ✓ Routing traffic... ✓ Setting IAM Policy... Done. Service [translate] revision [translate-00001-xyz] has been deployed and is serving 100 percent of traffic. Service URL: https://SVC_NAME-HASH-REG_ABBR.a.run.app
Cloud Buildpacki z aplikacjami do Cloud Run w podobny sposób jak w przypadku uruchomienia aplikacji lokalnie. W przypadku użytkowników środowiska Node.js działa on npm install
i npm start
. W przypadku Pythona działa on pip install -r requirements.txt
i uruchamia aplikację zgodnie z instrukcjami w Procfile
. (To samo dotyczy wszystkich innych języków obsługiwanych przez Cloud Buildpacks). Aplikacja będzie gotowa do uruchomienia po zakończeniu procesu kompilacji.
Aplikacja zostanie następnie (wdrożona regionalnie, ale) dostępna globalnie. Dostęp do niej będzie możliwy pod adresem URL zawierającym identyfikator projektu widoczny w danych wyjściowych wdrożenia (w sekcji „Service URL
”):
Przetłumacz coś, aby zobaczyć, jak działa.
11. Podsumowanie
Gratulacje! Wiesz już, jak włączyć interfejs Cloud Translation API i z niego korzystać, uzyskać niezbędne dane logowania i wdrożyć prostą aplikację internetową do użycia lokalnie w App Engine, Cloud Functions lub Cloud Run. Sprawdź folder repozytorium, aby dowiedzieć się więcej lub uzyskać dostęp do innych wersji tej aplikacji oraz innych ćwiczeń z programowania.
Czyszczenie danych
Interfejs Cloud Translation API umożliwia bezpłatne wykonywanie określonej liczby przetłumaczonych znaków miesięcznie. App Engine ma też bezpłatny limit, tak samo jak w Cloud Functions i Cloud Run. W przypadku przekroczenia którejś z tych wartości zostaną naliczone opłaty. Jeśli zamierzasz przejść do kolejnego ćwiczenia z programowania, nie musisz zamykać aplikacji.
Jeśli jednak nie chcesz na razie przejść do następnego samouczka lub obawiasz się, że internet wykryje właśnie wdrożoną aplikację, wyłącz aplikację App Engine, usuń funkcję w Cloud Functions lub wyłącz usługę Cloud Run. W ten sposób unikniesz naliczania opłat. Gdy uznasz, że chcesz przejść do kolejnego ćwiczenia w programowaniu, możesz je ponownie włączyć. Jeśli natomiast nie zamierzasz dalej korzystać z tej aplikacji lub innych ćwiczeń z programowania i chcesz całkowicie usunąć wszystko, możesz zamknąć swój projekt.
Poza tym wdrożenie na bezserwerowej platformie obliczeniowej Google Cloud wiąże się z niewielkimi kosztami kompilacji i pamięci masowej. Cloud Build ma własny bezpłatny limit, podobnie jak Cloud Storage. Aby zwiększyć przejrzystość, Cloud Build kompiluje obraz aplikacji, który jest następnie przechowywany w Cloud Container Registry lub Artifact Registry, jego następcy. Pamięć tego obrazu wykorzystuje część tego limitu, podobnie jak ruch wychodzący z sieci podczas przesyłania tego obrazu do usługi. Możesz jednak mieszkać w regionie, w którym nie ma takiego poziomu bezpłatnego. Dlatego pamiętaj o wykorzystaniu miejsca na dane, aby zminimalizować potencjalne koszty.
12. Dodatkowe materiały
W kolejnych sekcjach znajdziesz dodatkowe materiały do czytania, a także zalecane ćwiczenia, które pozwolą Ci poszerzyć wiedzę zdobytą w ramach tego samouczka.
Dodatkowe badanie
Teraz, gdy masz już doświadczenie w korzystaniu z interfejsu Translation API, wykonaj kilka dodatkowych ćwiczeń, aby rozwinąć swoje umiejętności. Aby kontynuować ścieżkę szkoleniową, zmodyfikuj naszą przykładową aplikację, by:
- Wykonaj wszystkie pozostałe wersje tego ćwiczenia z programowania, aby uruchomić go lokalnie lub wdrożyć na bezserwerowych platformach obliczeniowych Google Cloud (patrz plik README repozytorium).
- Ukończ ten samouczek, używając innego języka programowania.
- Zmień tę aplikację, aby obsługiwała różne języki źródłowe lub docelowe.
- Uaktualnij tę aplikację, aby móc tłumaczyć tekst na więcej niż jeden język. zmienić plik szablonu, tak by zawierał menu z obsługiwanymi językami docelowymi.
Więcej informacji
Google App Engine
Google Cloud Functions
- Strona główna Cloud Functions
- Dokumentacja Cloud Functions
- Domyślne konta usługi dla Cloud Functions
Google Cloud Run,
Google Cloud Buildpacks, Container Registry, Artifact Registry
- Ogłoszenie dotyczące Cloud Buildpacks
- Repozytorium Cloud Buildpacks
- Strona główna Cloud Artifact Registry
- Dokumentacja Cloud Artifact Registry
- Strona główna Cloud Container Registry
- Dokumentacja Cloud Container Registry
Google Cloud Translation i Google ML Kit
- Strona główna Cloud Translation
- Dokumentacja Cloud Translation
- Biblioteki klienta Cloud Translation API (wszystkie języki programowania)
- Języki obsługiwane przez Cloud Translation API (zapisane/zamawiane)
- Strona z cennikiem interfejsu Translation API
- Wszystkie „elementy składowe” Cloud AI/ML Interfejsy API
- Google ML Kit (podzbiór interfejsów Cloud AI/ML API do aplikacji mobilnych)
- Interfejs Google ML Kit Translation API
Inne strony lub usługi Google Cloud
- Biblioteki klienta Google Cloud
- Zawsze bezpłatne usługi Google Cloud typ
- Cała dokumentacja Google Cloud
Linki w Pythonie
- Python 3 – krótkie wprowadzenie do App Engine
- Środowisko wykonawcze Python 2 App Engine (Standard)
- Środowisko wykonawcze Python 3 App Engine (Standard)
- Różnice między Pythonem 2 a Pythonem 2 3 środowiska wykonawcze App Engine (Standard)
- Przewodnik po migracji z języka Python 2 do 3 App Engine (wersja standardowa)
- Krótkie wprowadzenie do Cloud Functions w Pythonie
- Python Cloud Run – krótkie wprowadzenie
- Obsługa Google Cloud Pythona
- Flask
Połączenia z Node.js
- Krótkie wprowadzenie do App Engine w Node.js
- Środowisko wykonawcze App Engine (standardowe) Node.js
- Krótkie wprowadzenie do Cloud Functions (Node.js)
- Krótkie wprowadzenie do Cloud Run Node.js
- Obsługa Google Cloud Node.js
- Ekspresowa
Licencja
Ten samouczek jest dostępny na licencji Creative Commons Uznanie autorstwa 2.0, a kod źródłowy w repozytorium jest na licencji Apache 2.