Начало работы с облачными функциями

1. Обзор

Cloud-Functions.png

С помощью облачных функций вы пишете простые одноцелевые функции, которые привязываются к событиям, исходящим из вашей облачной инфраструктуры и служб. Ваша облачная функция срабатывает при возникновении отслеживаемого события. Ваш код выполняется в полностью управляемой среде. Нет необходимости предоставлять какую-либо инфраструктуру или беспокоиться об управлении серверами.

Облачные функции в настоящее время можно писать на 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, а также многими другими.

907ffb96feada611.png

События и триггеры

Облачные события — это события, которые происходят в вашей облачной среде. Это могут быть такие вещи, как изменения данных в базе данных, файлы, добавленные в систему хранения, или создаваемый новый экземпляр виртуальной машины.

События происходят независимо от того, решите ли вы на них реагировать или нет. Вы создаете ответ на событие с помощью триггера. Триггер — это заявление о том, что вы заинтересованы в определенном событии или наборе событий. Привязка функции к триггеру позволяет захватывать события и действовать в соответствии с ними. Дополнительные сведения о создании триггеров и связывании их с функциями см. в разделе События и триггеры.

Бессерверный

Облачные функции избавляют от работы по управлению серверами, настройке программного обеспечения, обновлению инфраструктур и исправлению операционных систем. Программное обеспечение и инфраструктура полностью управляются Google, поэтому вам просто нужно добавить код. Более того, предоставление ресурсов происходит автоматически в ответ на события. Это означает, что функция может масштабироваться от нескольких вызовов в день до многих миллионов вызовов без каких-либо усилий с вашей стороны.

Варианты использования

Асинхронные рабочие нагрузки, такие как облегченный ETL, или облачная автоматизация, например запуск сборки приложений, теперь больше не требуют собственного сервера и разработчика для его подключения. Вы просто развертываете облачную функцию, привязанную к нужному событию, и все готово.

Детализированная природа облачных функций, предоставляемая по требованию, также делает их идеальным кандидатом для облегченных API и веб-перехватчиков. Кроме того, автоматическое предоставление конечных точек HTTP при развертывании функции HTTP означает, что не требуется сложной настройки, как в случае с некоторыми другими службами.

В этом практическом лабораторном занятии показано, как создавать, развертывать и тестировать облачную функцию с помощью консоли Google Cloud. Вы будете :

  • Создайте облачную функцию
  • Разверните и протестируйте функцию
  • Просмотр журналов

2. Настройка и требования

Самостоятельная настройка среды

  1. Войдите в Cloud Console и создайте новый проект или повторно используйте существующий. (Если у вас еще нет учетной записи Gmail или G Suite, вам необходимо ее создать .)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

Запомните идентификатор проекта — уникальное имя для всех проектов Google Cloud (имя, указанное выше, уже занято и не подойдет вам, извините!). Позже в этой лаборатории он будет называться PROJECT_ID .

  1. Далее вам необходимо включить биллинг в Cloud Console, чтобы использовать ресурсы Google Cloud.

Прохождение этой лаборатории кода не должно стоить много, если вообще стоит. Обязательно следуйте всем инструкциям в разделе «Очистка», в которых рассказывается, как отключить ресурсы, чтобы вам не приходилось нести расходы, выходящие за рамки этого руководства. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .

Google Cloud Shell

Хотя Google Cloud и облачными функциями можно управлять удаленно с вашего ноутбука, в этой лаборатории мы будем использовать Google Cloud Shell , среду командной строки, работающую в облаке.

Эта виртуальная машина на базе Debian оснащена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает в Google Cloud, что значительно повышает производительность сети и аутентификацию. Это означает, что все, что вам понадобится для этой лаборатории кода, — это браузер (да, он работает на Chromebook).

  1. Чтобы активировать Cloud Shell из Cloud Console, просто нажмите «Активировать Cloud Shell». fEbHefbrRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVB7zSwz7p6ItNgx4tXqQjag7BfWPcZN5kP-X 3-й квартал (подготовка и подключение к среде займет всего несколько минут).

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARE01A

Снимок экрана 14.06.2017, 22.13.43.png

После подключения к 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:

R7chO4PKQfLC3bvFBNZJALLTUiCgyLEq_67ECX7ohs_0ZnSjC7GxDNxWrJJUaoM53LnqABYamrBJhCuXF-J9XBzuUgaz7VvaxNrkP2TAn93Drxccyj2-5zz4AxL-G3hzxZ4PsM5HHQ

Cloud Shell также по умолчанию устанавливает некоторые переменные среды, которые могут быть полезны при выполнении будущих команд.

echo $GOOGLE_CLOUD_PROJECT

Вывод команды

<PROJECT_ID>
  1. Наконец, установите зону по умолчанию и конфигурацию проекта.
gcloud config set compute/zone us-central1-f

Вы можете выбрать множество различных зон. Дополнительную информацию см. в разделе «Регионы и зоны» .

3. Создайте функцию

На этом этапе вы создадите облачную функцию с помощью консоли.

  • В консоли щелкните меню Навигация > Облачные функции.

fe64222954f5f372.png

  • Нажмите «СОЗДАТЬ ФУНКЦИЮ»:

7adca9640ca2e5a6.png

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

795f1fedc0f039bb.png

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

b68c3647b771e6f9.png

После нажатия кнопки «Создать» консоль перенаправляется на страницу «Обзор облачных функций».

Пока функция развертывается, значок рядом с ней представляет собой небольшой счетчик. Когда он развернут, счетчик будет иметь зеленую галочку. Если возникнут какие-либо проблемы, вы будете уведомлены красным значком и ссылкой на журналы, чтобы понять, что пошло не так (вероятно, проблема в вашем коде).

3ec684b1b4906657.png

Вот и все! Ваша функция теперь активна и готова к запуску через HTTP.

4. Проверьте функцию

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

74e310ee6663bb3c.png

В поле «Триггерное событие» введите следующий текст в скобках {} и нажмите « Протестировать функцию» .

В поле «Вывод» вы должны увидеть сообщение «Успешно: Hello World!

В поле «Журналы» код состояния 200 указывает на успех. Обратите внимание, что появление журналов может занять минуту.

a876def9cbf24a45.png

5. Просмотр журналов функций

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

8917a2bfa4fb9502.png

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

e97e6ec1fc17dfd7.png

Вот пример истории журнала:

d91a00cf4457fa84.png

Обратите внимание, что вы можете фильтровать журналы по функциям, по серьезности и выполнять поиск по метке или тексту в произвольной форме.

Ваше приложение развернуто, протестировано, и вы смогли просмотреть журналы.

6. Очистка ресурсов

На самом деле вам не нужно очищать ресурсы, поскольку это бессерверные вычисления: масштабирование до нуля означает также масштабирование затрат до нуля. Поэтому, если ваша функция не получает трафика, никаких затрат не будет. Кроме того, первые 2 миллиона вызовов облачных функций каждый месяц бесплатны. Посетите страницу цен для более подробной информации.

Если вы хотите удалить функцию, просто перейдите на страницу обзора, выберите функцию и нажмите УДАЛИТЬ:

4fe11e1b41b32ba2.png

7. Что дальше

Cloud Functions готовит для вас гораздо больше! Ознакомьтесь с другими лабораториями кода, страницей продукта и его документацией .

Вам также следует проверить следующее: