1. Обзор

С помощью Cloud Functions вы пишете простые, одноцелевые функции, которые привязываются к событиям, генерируемым вашей облачной инфраструктурой и сервисами. Ваша Cloud Function запускается при срабатывании отслеживаемого события. Ваш код выполняется в полностью управляемой среде. Нет необходимости выделять инфраструктуру или беспокоиться об управлении серверами.
В настоящее время облачные функции можно писать на JavaScript, Python или Go. В случае JavaScript они выполняются в среде Node.js на платформе Google Cloud Platform. Вы можете взять свою облачную функцию и запустить её в любой стандартной среде выполнения Node.js, что значительно упрощает как переносимость, так и локальное тестирование.
Подключайте и расширяйте облачные сервисы.
Cloud Functions предоставляет логический слой, позволяющий писать код для подключения и расширения облачных сервисов. Они отслеживают и реагируют на загрузку файла в Cloud Storage, изменения в журнале или входящие сообщения в теме Cloud Pub/Sub. Cloud Functions дополняют существующие облачные сервисы и позволяют решать все большее количество задач с помощью произвольной программной логики. Cloud Functions имеют доступ к учетным данным Google Service Account и, таким образом, беспрепятственно аутентифицируются с большинством сервисов Google Cloud Platform, таких как Datastore, Cloud Spanner, Cloud Translation API, Cloud Vision API, а также многими другими.

События и триггеры
Облачные события — это то, что происходит в вашей облачной среде. Это могут быть, например, изменения данных в базе данных, добавление файлов в систему хранения или создание нового экземпляра виртуальной машины.
События происходят независимо от того, реагируете вы на них или нет. Реакцию на событие вы создаёте с помощью триггера. Триггер — это объявление о том, что вас интересует определённое событие или набор событий. Привязка функции к триггеру позволяет отслеживать события и реагировать на них. Более подробную информацию о создании триггеров и их связывании с функциями см. в разделе «События и триггеры».
Бессерверная архитектура
Cloud Functions избавляет от необходимости управлять серверами, настраивать программное обеспечение, обновлять фреймворки и устанавливать патчи для операционных систем. Программное обеспечение и инфраструктура полностью управляются Google, поэтому вам нужно только добавлять код. Кроме того, выделение ресурсов происходит автоматически в ответ на события. Это означает, что функция может масштабироваться от нескольких вызовов в день до многих миллионов вызовов без каких-либо усилий с вашей стороны.
Варианты использования
Асинхронные рабочие нагрузки, такие как легковесные ETL-процессы или облачная автоматизация, например, запуск сборки приложений, теперь не требуют собственного сервера и разработчика для их настройки. Вы просто развертываете облачную функцию, привязанную к нужному событию, и все готово.
Благодаря высокой детализации и возможности настройки по запросу, Cloud Functions идеально подходит для создания легковесных API и веб-хуков. Кроме того, автоматическое создание HTTP-конечных точек при развертывании HTTP-функции означает отсутствие сложной настройки, которая требуется в некоторых других сервисах.
В этом практическом занятии вы узнаете, как создавать, развертывать и тестировать облачные функции с помощью консоли Google Cloud. Вы:
- Создайте облачную функцию
- Разверните и протестируйте функцию.
- Просмотреть журналы
2. Настройка и требования
Настройка среды для самостоятельного обучения
- Войдите в Cloud Console и создайте новый проект или используйте существующий. (Если у вас еще нет учетной записи Gmail или G Suite, вам необходимо ее создать .)
Запомните идентификатор проекта (Project ID) — уникальное имя для всех проектов Google Cloud (указанное выше имя уже занято и вам не подойдёт, извините!). В дальнейшем в этом практическом занятии оно будет обозначаться как PROJECT_ID .
- Далее вам потребуется включить оплату в Cloud Console, чтобы использовать ресурсы Google Cloud.
Выполнение этого практического задания не должно стоить дорого, если вообще что-либо. Обязательно следуйте инструкциям в разделе «Очистка», где указано, как отключить ресурсы, чтобы избежать дополнительных расходов после завершения этого урока. Новые пользователи Google Cloud имеют право на бесплатную пробную версию стоимостью 300 долларов США .
Google Cloud Shell
Хотя Google Cloud и Cloud Functions можно запускать удаленно с ноутбука, в этом практическом занятии мы будем использовать Google Cloud Shell — среду командной строки, работающую в облаке.
Эта виртуальная машина на базе Debian содержит все необходимые инструменты разработки. Она предоставляет постоянный домашний каталог размером 5 ГБ и работает в облаке Google, что значительно повышает производительность сети и аутентификацию. Это означает, что для выполнения этого практического задания вам понадобится только браузер (да, он работает и на Chromebook).
- Для активации Cloud Shell из консоли Cloud Console просто нажмите «Активировать Cloud Shell».
(На подготовку и подключение к среде должно уйти всего несколько минут).
После подключения к Cloud Shell вы увидите, что ваша аутентификация пройдена и проект уже настроен на ваш PROJECT_ID .
gcloud auth list
вывод команды
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
вывод команды
[core] project = <PROJECT_ID>
Если по какой-либо причине проект не создан, просто выполните следующую команду:
gcloud config set project <PROJECT_ID>
Ищете свой PROJECT_ID ? Проверьте, какой ID вы использовали на этапах настройки, или найдите его на панели управления Cloud Console:
Cloud Shell также по умолчанию устанавливает некоторые переменные среды, которые могут быть полезны при выполнении будущих команд.
echo $GOOGLE_CLOUD_PROJECT
вывод команды
<PROJECT_ID>
- Наконец, установите зону по умолчанию и конфигурацию проекта.
gcloud config set compute/zone us-central1-f
Вы можете выбрать различные зоны. Для получения дополнительной информации см. раздел «Регионы и зоны» .
3. Создайте функцию
На этом шаге вы создадите облачную функцию с помощью консоли.
- В консоли щелкните меню «Навигация» > «Облачные функции».

- Нажмите кнопку "СОЗДАТЬ ФУНКЦИЮ":

- Назовите свою функцию
GCFunctionи оставьте остальные параметры по умолчанию: выделение памяти, HTTP в качестве триггера, встроенный редактор, среда выполнения по умолчанию и пример кода по умолчанию.

- Находясь в диалоговом окне «Создать функцию», внизу нажмите кнопку «Создать», чтобы развернуть функцию:

После нажатия кнопки «Создать» консоль перенаправит вас на страницу обзора облачных функций.
Во время развертывания функции рядом с ней отображается небольшой индикатор загрузки. После развертывания индикатор загорится зеленой галочкой. В случае возникновения проблем вы получите уведомление в виде красного значка и ссылку на журналы, чтобы понять, что пошло не так (вероятно, проблема в вашем коде).

Вот и всё! Ваша функция теперь активна и готова к запуску по протоколу HTTP.
4. Проверьте функцию.
На странице «Обзор облачных функций» отобразите меню вашей функции и нажмите «Проверить функцию» :

В поле «Событие запуска» введите следующий текст в квадратных скобках {} и нажмите «Протестировать функцию» .
В поле «Вывод» вы должны увидеть сообщение «Успех: Hello World!
В поле «Журналы» код состояния 200 указывает на успешное выполнение. Обратите внимание, что для отображения журналов может потребоваться минута.

5. Просмотрите журналы выполнения функций.
Нажмите на синюю стрелку, чтобы вернуться на страницу обзора облачных функций:

Отобразите меню для вашей функции и нажмите «Просмотреть журналы» :

Вот пример истории событий в журнале:

Обратите внимание, что вы можете фильтровать журналы по функциям, по уровню серьезности, а также осуществлять поиск по метке или произвольному тексту.
Ваше приложение развернуто, протестировано, и вы смогли просмотреть журналы.
6. Ресурсы для уборки
Вам не нужно будет освобождать ресурсы, поскольку это бессерверные вычисления: масштабирование до нуля означает и нулевые затраты на масштабирование. Поэтому, если ваша функция не получает трафика, никаких затрат не возникнет. Кроме того, первые 2 миллиона вызовов Cloud Function каждый месяц бесплатны. Подробнее см. на странице с ценами .
Чтобы удалить функцию, просто перейдите на страницу обзора, выберите функцию и нажмите «УДАЛИТЬ».

7. Что дальше?
Cloud Functions предлагает вам гораздо больше! Ознакомьтесь с другими практическими заданиями, страницей продукта и его документацией .
Также вам следует ознакомиться со следующим:
- Вызов облачных функций (доступны триггеры для вызова функций)
- Мониторинг облачных функций (журналы, отчеты об ошибках и многое другое)
- ...или другие практические занятия из категории «Бессерверные вычисления»