1. Обзор
Эта серия курсов по кодированию (практические руководства для самостоятельного обучения) призвана помочь разработчикам понять различные варианты, которые у них есть при развертывании своих приложений. Вы узнаете, как использовать Google Cloud Translation API в простом веб-приложении. Это приложение можно запустить локально или развернуть на облачной бессерверной вычислительной платформе ( App Engine, Cloud Functions или Cloud Run ).
Вы будете выполнять это руководство по JavaScript с Node.js, используя веб-фреймворк Express.js . Вы также узнаете, как получить доступ к API Google Cloud с наших бессерверных платформ. Все версии этого приложения взяты из «туманного бессерверного» репозитория с открытым исходным кодом , который включает версию этого приложения на Python и независимые лаборатории кода. В репозитории также размещены аналогичные приложения, которые показывают разработчикам, как получить доступ к необлачным API Google с наших бессерверных платформ.
Эта лаборатория кода посвящена развертыванию этого приложения на платформах, выделенных жирным шрифтом выше.
Вы узнаете, как
- Используйте Google Cloud API, в частности Cloud Translation API (расширенный/v3).
- Запустите базовое веб-приложение локально или разверните его на облачной платформе безсерверных вычислений.
Что вам понадобится
- Проект Google Cloud с активной учетной записью Cloud Billing.
- Веб-фреймворк, установленный для локального запуска ( Flask для тех, кто изучает учебник по Python, или Express для тех, кто изучает JavaScript/Node.js).
- По крайней мере одна безсерверная вычислительная платформа включена для развертываний Google Cloud.
- Базовые навыки программирования (Python или JavaScript/Node.js)
- Знание основных команд операционной системы.
Опрос
Как вы будете использовать этот урок?
Как бы вы оценили свой опыт разработки на Python или Node.js?
Как бы вы оценили свой опыт использования сервисов Google Cloud?
2. Настройка и требования
Самостоятельная настройка среды
- Войдите в Google Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .
- Имя проекта — это отображаемое имя для участников этого проекта. Это строка символов, не используемая API Google, и вы можете обновить ее в любое время.
- Идентификатор проекта должен быть уникальным для всех проектов Google Cloud и неизменяемым (нельзя изменить после его установки). Cloud Console автоматически генерирует уникальную строку; обычно тебя не волнует, что это такое. В большинстве лабораторий кода вам потребуется указать идентификатор проекта (обычно он обозначается как
PROJECT_ID
), поэтому, если он вам не нравится, создайте другой случайный идентификатор или попробуйте свой собственный и посмотрите, доступен ли он. Затем он «замораживается» после создания проекта. - Существует третье значение — номер проекта , который используют некоторые API. Подробнее обо всех трех этих значениях читайте в документации .
- Затем вам необходимо включить выставление счетов в Cloud Console, чтобы использовать облачные ресурсы/API. Прохождение этой лаборатории кода не должно стоить много, если вообще стоит. Чтобы отключить ресурсы и не платить за выставление счетов за пределами этого руководства, следуйте инструкциям по «очистке», которые можно найти в конце лаборатории кода. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .
3. Включите API перевода.
В этом разделе вы узнаете, как в целом включить API Google. Для нашего примера приложения вы включите Cloud Translation API . Вы также включите App Engine, Cloud Functions и/или Cloud Run (плюс Cloud Artifact Registry), в зависимости от того, на каких платформах вы хотите развернуть пример приложения.
Включение API Google
Введение
Независимо от того, какие API Google вы хотите использовать в своем приложении, они должны быть включены . API можно включить из командной строки или из облачной консоли. Процесс включения API идентичен, поэтому, включив один API, вы можете сделать другой таким же образом.
Вариант 1. Интерфейс командной строки gcloud
(Cloud Shell или локальная среда).
Хотя включение API из облачной консоли встречается чаще, некоторые разработчики предпочитают делать все из командной строки. Для этого вам нужно найти «имя службы» API. Это выглядит как URL: SERVICE_NAME
.googleapis.com
. Их можно найти в таблице «Поддерживаемые продукты» или программно запросить их с помощью Google Discovery API .
Вооружившись этой информацией, с помощью Cloud Shell (или локальной среды разработки с установленным инструментом командной строки gcloud
) вы можете включить API следующим образом:
gcloud services enable SERVICE_NAME.googleapis.com
Пример 1. Включение Cloud Vision API
gcloud services enable vision.googleapis.com
Пример 2. Включите Google App Engine
gcloud services enable appengine.googleapis.com
Пример 3. Включите несколько API одним запросом. Например, если в этой лаборатории кода зрители развертывают приложение с помощью Cloud Translation API в App Engine, Cloud Functions и Cloud Run, командная строка будет такой:
gcloud services enable appengine.googleapis.com cloudfunctions.googleapis.com artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com
Эта команда включает App Engine, Cloud Functions, Cloud Run и Cloud Translation API. Кроме того, он активирует реестр облачных артефактов, поскольку именно здесь образы контейнеров должны быть зарегистрированы в системе Cloud Build для развертывания в Cloud Run.
Вариант 2. Облачная консоль.
Вы также можете включить API Google в диспетчере API. В Cloud Console перейдите в API Manager и выберите Library .
Начните вводить название API в строку поиска, чтобы увидеть соответствующие результаты:
Выберите API, который вы хотите включить, и нажмите кнопку «Включить» :
Процесс включения всех API одинаков, независимо от того, какой API Google вы хотите использовать.
Расходы
Многие API Google можно использовать бесплатно, однако за использование большинства продуктов и API Google Cloud взимается плата. При включении Cloud API вас могут попросить указать активную учетную запись для выставления счетов. Однако некоторые продукты Google Cloud имеют уровень «Всегда бесплатно» , который необходимо превысить, чтобы взиматься плата за выставление счетов.
Новые пользователи GCP имеют право на бесплатную пробную версию , стоимость которой в настоящее время составляет 300 долларов США за первые 90 дней. Codelabs, как правило, не требует больших затрат или каких-либо счетов, поэтому мы рекомендуем вам отложить использование бесплатной пробной версии до тех пор, пока вы действительно не будете готовы провести ее тест-драйв, тем более что это разовое предложение. Квоты уровня бесплатного пользования не имеют срока действия и применяются независимо от того, используете ли вы бесплатную пробную версию или нет.
Перед включением пользователям следует ознакомиться с информацией о ценах на любой API (пример: страница цен на Cloud Vision API ), особенно отметив, есть ли у него уровень бесплатного пользования, и если да, то какой он. Пока вы остаетесь в пределах установленных дневных или ежемесячных лимитов в совокупности, вы не должны нести никаких расходов. Цены и уровни бесплатного пользования различаются в зависимости от API группы продуктов Google. Примеры:
- Google Cloud/GCP — счета за каждый продукт выставляются по-разному и, как правило, с оплатой по факту использования; см. информацию об уровне бесплатного пользования выше.
- Карты Google — содержат набор API и предлагают пользователям общий бесплатный ежемесячный кредит в размере 200 долларов США .
- API Google Workspace (ранее G Suite) — использование (в пределах определенных ограничений) покрывается ежемесячной абонентской платой Workspace , поэтому за использование API для таких приложений, как Gmail, Google Drive, Calendar, Docs, Sheets или Slides, не взимается прямая оплата. .
Различные продукты Google оплачиваются по-разному, поэтому обязательно ознакомьтесь с соответствующей документацией для получения этой информации.
Убедитесь, что нужные службы включены
Убедитесь, что API Cloud Translation используется в диспетчере API , как указано выше. Если вы не включили бессерверные платформы из командной строки, вы можете сделать это на каждой из соответствующих панелей мониторинга в облачной консоли: App Engine , Cloud Functions , Cloud Run .
Хотя включение API из облачной консоли визуально информативно, быстрее использовать инструмент gcloud
, которому для включения всех служб требуется несколько секунд:
$ 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.
Подробнее о расходах
Приведенный выше раздел о затратах является общим для всех API Google. Давайте рассмотрим более подробную информацию об этом уроке. Хотя его ежемесячная квота не указана на общей сводной странице уровня «Всегда бесплатно» , на странице цен API перевода указано, что все пользователи ежемесячно получают фиксированное количество переведенных символов . Вы не должны нести никаких расходов со стороны API, если ваш уровень ниже этого порога. Подробнее о затратах при использовании бессерверных платформ Google Cloud смотрите в разделе «Затраты» репозитория . В конце раздела «Очистка» будет описано, как прекратить выставление счетов после завершения этой лаборатории.
4. Получите пример кода приложения.
Загрузите ZIP или клонируйте репозиторий
- Загрузите ZIP-файл или клонируйте репозиторий с помощью
git clone https://github.com/googlecodelabs/cloud-nebulous-serverless.git
- Если у вас нет локальной среды разработки и вы хотите выполнить это руководство в Cloud Shell , вы можете клонировать репозиторий с помощью той же команды
git clone
. - Вы также можете получить доступ к ZIP-файлу, нажав зеленую кнопку «Код» , как показано на следующем снимке экрана:
Теперь, когда у вас есть все, создайте полную копию папки для выполнения этого конкретного руководства, поскольку оно, скорее всего, потребует удаления или изменения файлов. Если вы хотите выполнить другое развертывание, вы можете начать заново, скопировав оригинал, чтобы вам не приходилось клонировать или загружать его снова.
5. Подтвердите среду Node.js.
Чтобы настроить среду Node.js, выполните следующие действия:
- Убедитесь, что у вас установлены современные версии Node (>=10) и NPM (>=6).
- Перейдите туда, где вы клонировали репозиторий (или разархивировали ZIP-файл), затем перейдите в папку
cloud/nodejs
- Убедитесь, что
package.json
присутствует, затем запуститеnpm install
Для пункта 1 выше вы можете проверить, какие версии у вас есть, в командной строке:
$ node -v v17.0.1 $ npm -v 8.1.0
6. Обзор примера приложения
Пример приложения представляет собой простую производную версию Google Translate , которая предлагает пользователям вводить текст на английском языке и получать эквивалентный перевод этого текста на испанском языке.
Файл конфигурации package.json
указывает, какие сторонние пакеты необходимы для приложения (обратите внимание, что версии пакетов могут быть обновлены сверх указанных здесь):
{
"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"
}
}
Теперь откройте файл index.js
, чтобы увидеть, как он работает. Если опустить прокомментированные строки о лицензировании, сверху и снизу это выглядит так:
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
включает в себя функциональность платформы и шаблонов, а также клиентскую библиотеку Cloud Translation API. - Глобальные переменные представляют веб-приложение, идентификатор облачного проекта, клиент API перевода, родительский «путь к местоположению» для вызовов API перевода, а также
SOURCE
иTARGET
языки. В данном случае это английский (en
) и испанский (es
), но вы можете изменить эти значения на другие языковые коды , поддерживаемые Cloud Translation API . - Первый элемент каждой пары (
SOURCE
иTARGET
) — это код языка, а второй — имя языка (и используется только для целей отображения, поскольку не имеет отношения к API). - Несколько строк внизу предназначены для отправки всех HTTP-запросов в
translate()
а затем для экспорта объекта приложенияapp
.
Наконец, в середине index.js
находится сердце приложения — функция 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);
}
Основная функция выполняет работу по приему пользовательского ввода и вызову API перевода для выполнения тяжелой работы. Давайте разберемся:
- Сбросьте основные переменные формы. В первую очередь это касается запросов GET, поскольку запросы POST будут содержать данные, заменяющие их.
- Если это POST, возьмите текст для перевода и, если он не пуст, создайте структуру JSON, представляющую требования к метаданным API. Затем вызовите API для обслуживания.
- Мы не передали
SOURCE[0]
в API конкретного источника на английском языке. Если вы не указываете исходный язык, вы запрашиваете API для автоматического определения исходного языка (см.sourceLanguageCode
в документации ). - В любом случае, отформатируйте фактические результаты (POST) или не используйте данные (GET) в контексте шаблона и выполните визуализацию.
Визуальная часть приложения находится в файле шаблона index.html
. Он показывает все ранее переведенные результаты (в противном случае пустые), а затем форму с запросом на перевод:
<!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>
В оставшейся части руководства вы можете выбрать любой или все из четырех вариантов развертывания и запуска этого приложения. Все развертывания являются необязательными, то есть вы можете выполнить любое из них или все из них.
- Запустите службу локально
- Развертывание в App Engine (стандартная среда)
- Развертывание в облачных функциях
- Развертывание в Cloud Run
7. ВАРИАНТ 1. Запустите службу локально.
Этот раздел лаборатории кода предназначен только для локального запуска. Если вы выполняете развертывание только в облаке, перейдите к следующему разделу.
Чтобы запустить пример приложения локально, необходимо выполнить три отдельных шага:
- Создать учетную запись службы
- Создайте пару открытого и закрытого ключей сервисной учетной записи.
- Загрузите файл учетных данных и прикрепите его к коду приложения.
- Запустить службу
Подробнее о сервисных аккаунтах
Учетные записи служб — это механизм безопасности для доступа к API Google для облачных приложений при доступе к данным, которые не принадлежат пользователям-людям. При развертывании в облаке, чтобы сократить время адаптации пользователей к облаку, все вычислительные платформы Google Cloud (бессерверные и другие) предоставляют учетные записи служб по умолчанию .
Учетные записи служб по умолчанию имеют широкий набор разрешений, позволяющих «обойти бюрократическую волокиту», но при подготовке к запуску производственной службы мы настоятельно рекомендуем пользователям следовать передовой практике «наименьших привилегий», но создавать учетные записи служб, управляемые пользователями. только с достаточным количеством разрешений для правильной работы вашего приложения. Тем не менее, для локальных развертываний не существует учетных записей службы по умолчанию, поэтому необходимо создать учетную запись службы плюс ключ учетной записи службы (на самом деле пара открытого/закрытого ключей) и сделать эти учетные данные доступными для кода приложения.
Создайте пару ключей сервисной учетной записи и загрузите файл учетных данных.
Следуйте инструкциям на этой странице , чтобы создать учетную запись службы и пару открытого/закрытого ключей для локального запуска. При создании ключа сервисной учетной записи вам будет предложено предоставить необходимые разрешения. Обязательно выберите roles/cloudtranslate.user
, чтобы вы могли успешно получить доступ к API.
После успешного создания пары ключей вам будет предложено загрузить файл ключей сервисной учетной записи. Назовите его credentials.json
и переместите в папку верхнего уровня приложения. Теперь вам нужно указать Cloud SDK использовать эти учетные данные: установите переменную среды GOOGLE_APPLICATION_CREDENTIALS
, чтобы она указывала на этот файл. Дополнительную информацию об этом процессе также можно найти на этой странице, посвященной использованию учетных записей служб.
Запустить службу
Когда вы будете готовы двигаться дальше, запустите сервер Express локально с помощью следующей команды:
$ npm start > cloud-nebulous-serverless-nodejs@0.0.1 start > node index.js Listening on port 8080
Перейдите в свой веб-браузер, чтобы подключиться к нему по адресу localhost:8080 , и вы должны увидеть что-то вроде следующего:
Переведите что-нибудь, чтобы увидеть, как это работает!
Когда вы будете удовлетворены этим, выйдите из сервера, нажав ^C (control-C) и выйдите. Поздравляем с запуском локального развертывания. Есть и хорошие новости: развертывание в облаке стало намного проще.
Поиск неисправностей
Вы получаете подобную ошибку при запросе перевода?
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' . . .
РЕШЕНИЕ . Эта ошибка означает, что вы не завершили создание учетной записи службы и не загрузили файл пары открытого/закрытого ключей credentials.json
. Пожалуйста, вернитесь к « ВАРИАНТУ 1: Запустить службу локально », завершите этот процесс и установите учетные данные в основную папку, прежде чем продолжить.
8. ВАРИАНТ 2. Развертывание в App Engine (стандартная среда).
Этот раздел лаборатории кода предназначен только для развертывания в Node App Engine. Если вам не интересно, переходите к следующему разделу.
В этом развертывании используется файл конфигурации app.yaml
, который в одной строке сообщает App Engine, какую среду выполнения использовать:
runtime: nodejs16
Файл app.yaml
не используется ни Cloud Functions, ни Cloud Run. Если вы не планируете использовать App Engine, этот файл можно безопасно удалить. Когда вы будете готовы к развертыванию в App Engine, выполните следующую команду:
$ gcloud app deploy
После выбора региона выходные данные gcloud app deploy
будут гораздо менее подробными и будут выглядеть следующим образом:
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
Теперь, когда ваше приложение доступно по всему миру, вы сможете получить к нему доступ по URL-адресу, содержащему идентификатор вашего проекта, и вы должны увидеть выходные данные, аналогичные локальной версии Express, но знайте, что оно работает в облаке и доступно по всему миру. мир:
Если вы отправите запрос, вы обнаружите, что он работает так же, как и все другие развертывания.
9. ВАРИАНТ 3. Развертывание в облачных функциях
Этот раздел лаборатории кода предназначен только для развертывания в Node Cloud Functions. Если вам не интересно, переходите к следующему разделу.
В Cloud Functions нет файлов конфигурации, поэтому, когда вы будете готовы к развертыванию в Cloud Functions, выполните следующую команду:
$ gcloud functions deploy translate \ --runtime nodejs16 \ --entry-point app \ --trigger-http \ --region REGION \ --allow-unauthenticated
Ваш проект GCP может иметь REGION
по умолчанию, но вы можете использовать флаг --region
для развертывания вашей функции в определенном регионе. Cloud Functions не предлагает вам понравиться другие продукты Cloud. Независимо от того, какой регион вы выберете, выходные данные gcloud functions deploy
должны выглядеть следующим образом:
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: '...'
Теперь, когда ваше приложение доступно по всему миру, вы сможете получить к нему доступ по URL-адресу, содержащему идентификатор вашего проекта, как показано в выходных данных развертывания (в разделе « httpsTrigger/url
»). URL-адрес должен выглядеть примерно так: https://
REGION
-
PROJECT_ID
.cloudfunctions.net/translate
, который зависит от выбранного вами региона, а также идентификатора вашего облачного проекта.
10. ВАРИАНТ 4. Развертывание в Cloud Run
Этот раздел лаборатории кода предназначен только для развертывания в Cloud Run. Если вам не интересно, переходите к следующему разделу.
В Cloud Run нет файлов конфигурации, поэтому, когда вы будете готовы к развертыванию в Cloud Run, следуйте инструкциям ниже.
Теперь вы готовы развернуть службу перевода в Cloud Run, выполнив следующую команду:
$ gcloud run deploy translate --source . --allow-unauthenticated --platform managed
Вывод должен выглядеть следующим образом и содержать подсказки для следующих шагов:
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 Build упаковывает ваши приложения в Cloud Run так же, как если бы вы запускали свое приложение локально. Для пользователей Node.js он запускает npm install
и npm start
. Для Python он запускает pip install -r requirements.txt
и запускает приложение согласно инструкциям в вашем Procfile
. (То же самое относится и ко всем другим языкам, поддерживаемым Cloud Buildpacks .) Ваше приложение будет готово к работе после завершения процесса сборки.
После этого ваше приложение (развертывается на региональном уровне, но) становится доступным по всему миру, и к нему можно получить доступ по URL-адресу, содержащему идентификатор вашего проекта, как показано в выходных данных развертывания (в разделе « Service URL
:»).
Переведите что-нибудь, чтобы увидеть, как это работает!
11. Заключение
Поздравляем! Вы узнали, как включить и использовать Cloud Translation API, получить необходимые учетные данные и развернуть простое веб-приложение для Express локально, в App Engine, Cloud Functions и/или Cloud Run. Пожалуйста, посетите папку репозитория , чтобы узнать больше или получить доступ к другим версиям этого приложения, а также к другим лабораториям кода.
Очистить
Cloud Translation API позволяет бесплатно переводить фиксированное количество символов в месяц . App Engine также имеет бесплатную квоту , то же самое касается Cloud Functions и Cloud Run . Если одно из этих значений будет превышено, с вас будет взиматься плата. Если вы планируете перейти к следующей лаборатории кода, вам не нужно закрывать приложение.
Однако, если вы еще не готовы перейти к следующему руководству или обеспокоены тем, что Интернет обнаружит только что развернутое вами приложение, отключите приложение App Engine , удалите функцию Cloud или отключите службу Cloud Run, чтобы избежать несение расходов. Когда вы будете готовы перейти к следующей лаборатории кода, вы можете снова включить ее. С другой стороны, если вы не собираетесь продолжать работу с этим приложением или другими лабораториями кода и хотите полностью удалить все, вы можете закрыть свой проект .
Кроме того, развертывание на бессерверной вычислительной платформе Google Cloud требует незначительных затрат на сборку и хранение . Cloud Build имеет собственную бесплатную квоту, как и Cloud Storage . Для большей прозрачности Cloud Build создает образ вашего приложения, который затем сохраняется либо в реестре облачных контейнеров , либо в реестре артефактов , его преемнике. Хранение этого изображения использует часть этой квоты, как и выходная сеть при передаче этого изображения в службу. Однако вы можете жить в регионе, где нет такого уровня бесплатного пользования, поэтому следите за использованием хранилища, чтобы минимизировать потенциальные затраты.
12. Дополнительные ресурсы
В следующих разделах вы можете найти дополнительные материалы для чтения, а также рекомендуемые упражнения, которые помогут расширить ваши знания, полученные в результате прохождения этого руководства.
Дополнительное исследование
Теперь, когда у вас есть некоторый опыт работы с API перевода, давайте выполним несколько дополнительных упражнений для дальнейшего развития ваших навыков. Чтобы продолжить обучение, измените наш пример приложения, чтобы он выполнял следующие действия:
- Завершите все остальные версии этой лаборатории кода для локального запуска или развертывания на бессерверных вычислительных платформах Google Cloud (см. README репозитория ).
- Выполните это руководство, используя другой язык программирования.
- Измените это приложение, чтобы оно поддерживало разные исходные или целевые языки.
- Обновите это приложение, чтобы иметь возможность переводить текст на несколько языков; измените файл шаблона, чтобы в нем был раскрывающийся список поддерживаемых целевых языков.
Узнать больше
Google App Engine
- Домашняя страница App Engine
- Документация App Engine
- Учетные записи служб по умолчанию для App Engine
Облачные функции Google
- Домашняя страница облачных функций
- Документация по облачным функциям
- Учетные записи служб по умолчанию для облачных функций
Google Cloud Run
Пакеты сборки Google Cloud, реестр контейнеров, реестр артефактов
- Анонс облачных сборочных пакетов
- Репозиторий облачных сборочных пакетов
- Домашняя страница реестра облачных артефактов
- Документация по реестру облачных артефактов
- Домашняя страница реестра облачных контейнеров
- Документация по реестру облачных контейнеров
Google Cloud Translation и Google ML Kit
- Домашняя страница облачного перевода
- Документация по облачному переводу
- Клиентские библиотеки Cloud Translation API (все языки разработки)
- Языки, поддерживаемые Cloud Translation API (разговорные и письменные)
- Страница цен на API перевода
- Все API «строительных блоков» Cloud AI/ML
- Google ML Kit (подмножество Cloud AI/ML API для мобильных устройств)
- API перевода Google ML Kit
Другие продукты/страницы Google Cloud
- Клиентские библиотеки Google Cloud
- Уровень Google Cloud «Всегда бесплатно»
- Вся документация Google Cloud
Ссылки на Python
- Краткое руководство по Python 3 App Engine
- Среда выполнения Python 2 App Engine (стандартная)
- Среда выполнения Python 3 App Engine (стандартная)
- Различия между средами выполнения Python 2 и 3 App Engine (стандартными)
- Руководство по переходу с Python 2 на App Engine (стандартный)
- Краткое руководство по облачным функциям Python
- Краткое руководство по Python Cloud Run
- Поддержка Google Cloud Python
- Колба
Ссылки на Node.js
- Краткое руководство по Node.js App Engine
- Среда выполнения Node.js App Engine (стандартная)
- Краткое руководство по облачным функциям Node.js
- Краткое руководство по Node.js Cloud Run
- Поддержка Google Cloud Node.js
- Выражать
Лицензия
Это руководство доступно под лицензией Creative Commons Attribution 2.0 Generic License, а исходный код в репозитории — под лицензией Apache 2.