1. Обзор
С помощью облачных функций вы пишете простые одноцелевые функции, которые привязываются к событиям, исходящим из вашей облачной инфраструктуры и служб. Ваша облачная функция срабатывает при возникновении отслеживаемого события. Ваш код выполняется в полностью управляемой среде. Нет необходимости предоставлять какую-либо инфраструктуру или беспокоиться об управлении серверами.
Облачные функции в настоящее время можно писать на Javascript, Python или Go. В случае Javascript они выполняются в среде Node.js на Google Cloud Platform. Вы можете взять свою облачную функцию и запустить ее в любой стандартной среде выполнения Node.js, что упрощает переносимость и локальное тестирование.
Подключайте и расширяйте облачные сервисы
Облачные функции предоставляют соединительный уровень логики, который позволяет писать код для подключения и расширения облачных сервисов. Прослушивайте и отвечайте на загрузку файла в Cloud Storage, изменение журнала или входящее сообщение в теме Cloud Pub/Sub. Облачные функции дополняют существующие облачные сервисы и позволяют решать все большее количество случаев использования с произвольной логикой программирования. Облачные функции имеют доступ к учетным данным учетной записи службы Google и, таким образом, проходят беспрепятственную аутентификацию с большинством служб Google Cloud Platform, таких как Datastore, Cloud Spanner, Cloud Translation API, Cloud Vision API, а также многими другими.
События и триггеры
Облачные события — это события, которые происходят в вашей облачной среде. Это могут быть такие вещи, как изменения данных в базе данных, файлы, добавленные в систему хранения, или создаваемый новый экземпляр виртуальной машины.
События происходят независимо от того, решите ли вы на них реагировать или нет. Вы создаете ответ на событие с помощью триггера. Триггер — это заявление о том, что вы заинтересованы в определенном событии или наборе событий. Привязка функции к триггеру позволяет захватывать события и действовать в соответствии с ними. Дополнительные сведения о создании триггеров и связывании их с функциями см. в разделе События и триггеры.
Бессерверный
Облачные функции избавляют от работы по управлению серверами, настройке программного обеспечения, обновлению инфраструктур и исправлению операционных систем. Программное обеспечение и инфраструктура полностью управляются Google, поэтому вам просто нужно добавить код. Более того, предоставление ресурсов происходит автоматически в ответ на события. Это означает, что функция может масштабироваться от нескольких вызовов в день до многих миллионов вызовов без каких-либо усилий с вашей стороны.
Варианты использования
Асинхронные рабочие нагрузки, такие как облегченный ETL, или облачная автоматизация, например запуск сборки приложений, теперь больше не требуют собственного сервера и разработчика для его подключения. Вы просто развертываете облачную функцию, привязанную к нужному событию, и все готово.
Детализированная природа облачных функций, предоставляемая по требованию, также делает их идеальным кандидатом для облегченных API и веб-перехватчиков. Кроме того, автоматическое предоставление конечных точек HTTP при развертывании функции HTTP означает, что не требуется сложной настройки, как в случае с некоторыми другими службами.
В этом практическом лабораторном занятии показано, как создавать, развертывать и тестировать облачную функцию с помощью консоли Google Cloud. Вы будете :
- Создайте облачную функцию
- Разверните и протестируйте функцию
- Просмотр журналов
2. Настройка и требования
Самостоятельная настройка среды
- Войдите в Cloud Console и создайте новый проект или повторно используйте существующий. (Если у вас еще нет учетной записи Gmail или G Suite, вам необходимо ее создать .)
Запомните идентификатор проекта — уникальное имя для всех проектов Google Cloud (имя, указанное выше, уже занято и не подойдет вам, извините!). Позже в этой лаборатории он будет называться PROJECT_ID
.
- Далее вам необходимо включить биллинг в Cloud Console, чтобы использовать ресурсы Google Cloud.
Прохождение этой лаборатории кода не должно стоить много, если вообще стоит. Обязательно следуйте всем инструкциям в разделе «Очистка», в которых рассказывается, как отключить ресурсы, чтобы вам не приходилось нести расходы, выходящие за рамки этого руководства. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .
Google Cloud Shell
Хотя Google Cloud и облачными функциями можно управлять удаленно с вашего ноутбука, в этой лаборатории мы будем использовать Google Cloud Shell , среду командной строки, работающую в облаке.
Эта виртуальная машина на базе Debian оснащена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает в Google Cloud, что значительно повышает производительность сети и аутентификацию. Это означает, что все, что вам понадобится для этой лаборатории кода, — это браузер (да, он работает на 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
? Узнайте, какой идентификатор вы использовали на этапах настройки, или найдите его на панели управления 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 миллиона вызовов облачных функций каждый месяц бесплатны. Посетите страницу цен для более подробной информации.
Если вы хотите удалить функцию, просто перейдите на страницу обзора, выберите функцию и нажмите УДАЛИТЬ:
7. Что дальше
Cloud Functions готовит для вас гораздо больше! Ознакомьтесь с другими лабораториями кода, страницей продукта и его документацией .
Вам также следует проверить следующее:
- Вызов облачных функций (триггеры доступны для вызова функций)
- Мониторинг облачных функций (журналы, отчеты об ошибках и т. д.)
- ... или другие лаборатории кода из категории «Бессерверные»