1. Обзор
Эта серия практических занятий (в удобном для вас темпе) призвана помочь разработчикам понять различные возможности развертывания своих приложений. Вы узнаете, как использовать API Google Cloud Translation в простом веб-приложении. Это приложение можно запустить локально или развернуть на облачной платформе для бессерверных вычислений ( App Engine, Cloud Functions или Cloud Run ).
В этом уроке по JavaScript вы будете использовать Node.js и веб-фреймворк Express.js . Вы также узнаете, как получить доступ к API Google Cloud с наших бессерверных платформ. Все версии этого приложения взяты из открытого репозитория "nebulous serverless" , который включает версию этого приложения на Python и независимые практические задания. В репозитории также размещены аналогичные приложения, демонстрирующие разработчикам, как получить доступ к API Google, не относящимся к Cloud, с наших бессерверных платформ.
Данный практический урок посвящен развертыванию этого приложения на платформах, выделенных жирным шрифтом выше.
Вы узнаете, как
- Используйте API Google Cloud, в частности, Cloud Translation API (расширенные настройки/версия 3).
- Запустите базовое веб-приложение локально или разверните его на облачной бессерверной вычислительной платформе.
Что вам понадобится
- Проект Google Cloud с активной учетной записью Cloud Billing.
- Для запуска локально необходимо установить веб-фреймворк ( Flask для тех, кто изучает Python, или Express для тех, кто изучает JavaScript/Node.js).
- По крайней мере, одна бессерверная вычислительная платформа, поддерживающая развертывание в Google Cloud.
- Базовые навыки программирования (Python или JavaScript/Node.js)
- Практические навыки работы с основными командами операционной системы.
Опрос
Как вы будете использовать этот учебный материал?
Как бы вы оценили свой опыт разработки на Python или Node.js?
Как бы вы оценили свой опыт использования сервисов Google Cloud?
2. Настройка и требования
Настройка среды для самостоятельного обучения
- Войдите в консоль Google Cloud и создайте новый проект или используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .



- Название проекта — это отображаемое имя участников данного проекта. Это строка символов, не используемая API Google, и вы можете изменить её в любое время.
- Идентификатор проекта должен быть уникальным для всех проектов Google Cloud и неизменяемым (его нельзя изменить после установки). Консоль Cloud автоматически генерирует уникальную строку; обычно вам неважно, какая она. В большинстве практических заданий вам потребуется указать идентификатор проекта (обычно он обозначается как
PROJECT_ID), поэтому, если он вам не нравится, сгенерируйте другой случайный идентификатор или попробуйте свой собственный и посмотрите, доступен ли он. Затем он "замораживается" после создания проекта. - Существует третье значение — номер проекта , который используется некоторыми API. Подробнее обо всех трех значениях можно узнать в документации .
- Далее вам потребуется включить оплату в консоли Cloud, чтобы использовать ресурсы/API Cloud. Выполнение этого практического задания не должно стоить дорого, если вообще что-либо. Чтобы отключить ресурсы и избежать дополнительных расходов после завершения этого урока, следуйте инструкциям по «очистке», приведенным в конце практического задания. Новые пользователи Google Cloud имеют право на бесплатную пробную версию стоимостью 300 долларов США .
3. Включите API перевода.
В этом разделе вы узнаете, как включить API Google в целом. Для нашего примера приложения вам потребуется включить Cloud Translation API . Вам также потребуется включить App Engine, Cloud Functions и/или Cloud Run (а также Cloud Artifact Registry) в зависимости от того, на какой платформе (платформах) вы хотите развернуть пример приложения.
Включение API Google
Введение
Независимо от того, какой API Google вы хотите использовать в своем приложении, его необходимо включить . API можно включить из командной строки или из консоли Cloud. Процесс включения API идентичен, поэтому, включив один API, вы можете сделать это таким же образом и с другим.
Вариант 1: интерфейс командной строки gcloud (Cloud Shell или локальная среда)
Хотя включение API из Cloud Console более распространено, некоторые разработчики предпочитают делать все из командной строки. Для этого необходимо найти «имя сервиса» API. Оно выглядит как URL: SERVICE_NAME . Эти .googleapis.com можно найти в таблице поддерживаемых продуктов , или же их можно получить программным путем с помощью Google Discovery API .
Вооружившись этой информацией, с помощью Cloud Shell (или вашей локальной среды разработки с установленным инструментом командной строки gcloud ) вы можете включить API следующим образом:
gcloud services enable SERVICE_NAME.googleapis.com
Пример 1: Включение API Cloud Vision
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 Artifact Registry, поскольку именно там система Cloud Build должна регистрировать образы контейнеров для развертывания в Cloud Run.
Вариант 2: Облачная консоль
Вы также можете включить API Google в Менеджере API. В консоли Cloud перейдите в Менеджер API и выберите Библиотека .

Начните вводить название API в строку поиска, чтобы увидеть соответствующие результаты:

Выберите API, который хотите включить, и нажмите кнопку «Включить» :

Процесс активации всех API одинаков независимо от того, какой API Google вы хотите использовать.
Расходы
Многие API Google можно использовать бесплатно, однако использование большинства продуктов и API Google Cloud влечет за собой определенные затраты. При включении API Cloud вам может потребоваться активный платежный аккаунт. Однако некоторые продукты Google Cloud имеют тарифный план «Всегда бесплатно» , превышение которого влечет за собой оплату.
Новые пользователи GCP могут воспользоваться бесплатной пробной версией , которая в настоящее время стоит 300 долларов США и действует в течение первых 90 дней. Codelabs обычно не взимает большую плату или вообще не взимает ее, поэтому мы рекомендуем вам воздержаться от использования бесплатной пробной версии, пока вы действительно не будете готовы протестировать сервис, тем более что это разовое предложение. Квоты бесплатного уровня не истекают и применяются независимо от того, используете вы бесплатную пробную версию или нет.
Перед включением любого API пользователям следует ознакомиться с информацией о ценах (например, страница с ценами на API Cloud Vision ), особенно обращая внимание на наличие бесплатного уровня и, если он есть, на его размер. Пока вы не превышаете установленные совокупные дневные или месячные лимиты, никаких дополнительных расходов взиматься не должно. Цены и бесплатные уровни различаются в зависимости от API продуктовых групп Google. Примеры:
- Google Cloud/GCP — тарификация каждого продукта отличается и, как правило, основана на оплате за использование; информацию о бесплатном уровне см. выше.
- Google Maps — предлагает набор API и предоставляет пользователям бесплатный ежемесячный кредит в размере 200 долларов США .
- API Google Workspace (ранее G Suite) — предоставляют возможность использования (в пределах определенных лимитов), покрываемую ежемесячной абонентской платой Workspace , поэтому за использование API для таких приложений, как Gmail, Google Drive, Calendar, Docs, Sheets или Slides, не взимается прямая плата.
Разные продукты Google оплачиваются по-разному, поэтому обязательно обратитесь к соответствующей документации для получения этой информации.
Убедитесь, что необходимые службы включены.
Убедитесь, что API облачного перевода включен в API Manager , как указано выше. Если вы не включили бессерверные платформы из командной строки, вы можете сделать это из соответствующих панелей управления в Cloud Console: App Engine , Cloud Functions , Cloud Run .
Хотя включение API через Cloud Console наглядно и информативно, быстрее использовать инструмент 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. - Глобальные переменные представляют собой веб-приложение, идентификатор проекта Cloud, клиент 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 (стандартная среда)
- Развертывание в облачных функциях
- Развертывание в облаке. Запуск.
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 (Ctrl+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 не запрашивает подтверждение, как другие облачные продукты. Независимо от выбранного региона, вывод 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-адресу, содержащему идентификатор вашего проекта - как показано в результатах развертывания (в разделе PROJECT_ID httpsTrigger/url "). URL-адрес должен выглядеть примерно так: https:// REGION который .cloudfunctions.net/translate меняться в зависимости от выбранного региона и идентификатора вашего облачного проекта.

10. ВАРИАНТ 4: Развертывание в облаке
Этот раздел практического задания предназначен только для развертывания в 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 Buildpacks загружает ваши приложения в Cloud Run так же, как если бы вы запускали приложение локально. Для пользователей Node.js он запускает npm install и npm start . Для Python он запускает команду pip install -r requirements.txt и запускает приложение в соответствии с инструкциями в вашем Procfile . (То же самое относится и ко всем другим языкам, поддерживаемым Cloud Buildpacks .) Ваше приложение будет готово к работе после завершения процесса сборки.
Ваше приложение после этого (развернутое регионально, но) становится доступным глобально, и к нему можно получить доступ по URL-адресу, содержащему идентификатор вашего проекта, как показано в результатах развертывания (в разделе « Service URL :»).

Переведите что-нибудь, чтобы увидеть, как это работает!

11. Заключение
Поздравляем! Вы научились включать и использовать API облачного перевода, получать необходимые учетные данные и развертывать простое веб-приложение локально в Express, App Engine, Cloud Functions и/или Cloud Run. Пожалуйста, ознакомьтесь с папкой репозитория , чтобы узнать больше или получить доступ к другим версиям этого приложения, а также к другим практическим заданиям.
Уборка
API облачного перевода позволяет бесплатно переводить фиксированное количество символов в месяц . App Engine также имеет бесплатную квоту , как и Cloud Functions и Cloud Run . За превышение квоты взимается плата. Если вы планируете перейти к следующему практическому занятию, вам не нужно закрывать приложение.
Однако, если вы пока не готовы перейти к следующему уроку или опасаетесь, что интернет обнаружит только что развернутое вами приложение, отключите приложение App Engine , удалите облачную функцию или отключите службу Cloud Run , чтобы избежать дополнительных расходов. Когда вы будете готовы перейти к следующему практическому занятию, вы можете снова включить её. С другой стороны, если вы не собираетесь продолжать работу над этим приложением или другими практическими занятиями и хотите полностью удалить всё, вы можете закрыть свой проект .
Кроме того, развертывание на бессерверной вычислительной платформе Google Cloud влечет за собой незначительные затраты на сборку и хранение . Cloud Build, как и Cloud Storage , имеет собственную бесплатную квоту. Для большей прозрачности Cloud Build создает образ вашего приложения, который затем хранится либо в Cloud Container Registry , либо в Artifact Registry , его преемнике. Хранение этого образа расходует часть этой квоты, как и исходящий трафик сети при передаче этого образа в сервис. Однако вы можете проживать в регионе, где нет такого бесплатного уровня, поэтому следите за использованием хранилища, чтобы минимизировать потенциальные затраты.
12. Дополнительные ресурсы
В следующих разделах вы найдете дополнительные материалы для чтения, а также рекомендуемые упражнения для закрепления знаний, полученных в ходе изучения этого руководства.
Дополнительное исследование
Теперь, когда у вас есть некоторый опыт работы с API перевода, давайте выполним несколько дополнительных упражнений для дальнейшего развития ваших навыков. Чтобы продолжить обучение, измените наше тестовое приложение следующим образом:
- Выполните все остальные задания этого практического руководства для локального запуска или развертывания на бессерверных вычислительных платформах Google Cloud (см. README репозитория ).
- Выполните это руководство, используя другой язык программирования.
- Измените это приложение, чтобы оно поддерживало другие исходные или целевые языки.
- Обновите это приложение, чтобы оно могло переводить текст на несколько языков; измените файл шаблона, чтобы в нем был выпадающий список поддерживаемых целевых языков.
Узнать больше
Google App Engine
- Главная страница App Engine
- Документация App Engine
- Учетные записи служб по умолчанию для App Engine
Google Cloud Functions
- Главная страница Cloud Functions
- Документация по Cloud Functions
- Учетные записи сервиса по умолчанию для облачных функций
Google Cloud Run
Google Cloud Buildpacks, Container Registry, Artifact Registry
- анонс Cloud Buildpacks
- Репозиторий Cloud Buildpacks
- Главная страница Реестра облачных артефактов
- Документация реестра облачных артефактов
- Главная страница реестра облачных контейнеров
- Документация Cloud Container Registry
Google Cloud Translation и Google ML Kit
- Главная страница Cloud Translation
- Документация по облачному переводу
- Клиентские библиотеки Cloud Translation API (для всех языков разработки)
- API облачного перевода поддерживает (устные/письменные) языки.
- Страница с ценами на API перевода
- Все API-интерфейсы, являющиеся «строительными блоками» для облачных решений в области ИИ/машинного обучения.
- Google ML Kit (подмножество API облачных решений для ИИ/машинного обучения для мобильных устройств)
- API перевода Google ML Kit
Другие продукты/страницы Google Cloud
- клиентские библиотеки Google Cloud
- Уровень Google Cloud «Всегда бесплатно»
- Вся документация Google Cloud
ссылки на Python
- Быстрый старт для Python 3 App Engine
- Среда выполнения Python 2 App Engine (Standard)
- Среда выполнения Python 3 App Engine (Standard)
- Различия между средами выполнения Python 2 и 3 App Engine (Standard)
- Руководство по миграции с Python 2 на Python 3 App Engine (Standard)
- Быстрый старт работы с Python Cloud Functions
- Быстрый старт Python Cloud Run
- Поддержка Python в Google Cloud
- Колба
Ссылки Node.js
- Быстрый старт в Node.js App Engine
- Node.js App Engine (Standard) runtime
- Краткий старт в Node.js Cloud Functions
- Быстрый старт Node.js Cloud Run
- Поддержка Node.js в Google Cloud
- Выражать
Лицензия
Данный учебный материал распространяется под лицензией Creative Commons Attribution 2.0 Generic License, а исходный код в репозитории распространяется под лицензией Apache 2.0.