1. Введение

Cloud Run позволяет запускать контейнеры без сохранения состояния в полностью управляемой среде. Он построен на основе открытого исходного кода Knative , что позволяет вам выбирать между запуском контейнеров либо в полностью управляемой среде с помощью Cloud Run, либо в кластере Google Kubernetes Engine с помощью Cloud Run for Anthos .

Eventarc упрощает подключение различных сервисов (Cloud Run, Cloud Functions, Workflows) к событиям из различных источников. Он позволяет создавать архитектуры, управляемые событиями, в которых микросервисы слабо связаны и распределены. Он также берет на себя обработку событий, их доставку, обеспечение безопасности, авторизацию и обработку ошибок, что повышает гибкость разработчиков и отказоустойчивость приложений.
В этом практическом занятии вы познакомитесь с Eventarc. В частности, вы будете отслеживать события из Pub/Sub, Cloud Storage и Cloud Audit Logs с помощью Eventarc и передавать их в службу Cloud Run.
Что вы узнаете
- Видение Eventarc
- Найдите мероприятия в Eventarc
- Создайте приемник Cloud Run.
- Создайте триггер для Pub/Sub
- Создайте триггер для облачного хранилища.
- Создайте триггер для журналов аудита облака.
- Изучите пользовательский интерфейс Eventarc.
2. Видение Eventarc
Eventarc стремится доставлять события из различных источников Google, Google Cloud и сторонних сервисов в целевые хранилища событий Google Cloud.

Источники Google Cloud | Источники событий, являющиеся продуктами, принадлежащими Google Cloud. |
Источники Google | Источники событий, являющиеся продуктами Google, такими как Gmail, Hangouts, Android Management и другие. |
Пользовательские источники | Источники событий, не являющиеся продуктами Google и созданные самими конечными пользователями. |
сторонние источники | Источники событий, которые не принадлежат Google и не создаются клиентами. Сюда входят популярные источники событий, такие как Check Point CloudGuard, Datadog, ForgeRock, Lacework и т. д., которые принадлежат и поддерживаются сторонними поставщиками и партнерами. |
События нормализуются в соответствии с форматом CloudEvents v1.0 для обеспечения совместимости между различными сервисами. CloudEvents — это независимая от поставщиков открытая спецификация, описывающая данные событий в общих форматах, что обеспечивает совместимость между сервисами, платформами и системами.
3. Настройка и требования
Настройка среды для самостоятельного обучения
- Войдите в консоль Google Cloud и создайте новый проект или используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .



- Название проекта — это отображаемое имя участников данного проекта. Это строка символов, не используемая API Google, и вы можете изменить её в любое время.
- Идентификатор проекта должен быть уникальным для всех проектов Google Cloud и неизменяемым (его нельзя изменить после установки). Консоль Cloud автоматически генерирует уникальную строку; обычно вам неважно, какая она. В большинстве практических заданий вам потребуется указать идентификатор проекта (обычно он обозначается как
PROJECT_ID), поэтому, если он вам не нравится, сгенерируйте другой случайный идентификатор или попробуйте свой собственный и посмотрите, доступен ли он. Затем он "замораживается" после создания проекта. - Существует третье значение — номер проекта , который используется некоторыми API. Подробнее обо всех трех значениях можно узнать в документации .
- Далее вам потребуется включить оплату в консоли Cloud, чтобы использовать ресурсы/API Cloud. Выполнение этого практического задания не должно стоить дорого, если вообще что-либо. Чтобы отключить ресурсы и избежать дополнительных расходов после завершения этого урока, следуйте инструкциям по «очистке», приведенным в конце практического задания. Новые пользователи Google Cloud имеют право на бесплатную пробную версию стоимостью 300 долларов США .
Запустить Cloud Shell
Хотя Google Cloud можно управлять удаленно с ноутбука, в этом практическом занятии вы будете использовать Google Cloud Shell — среду командной строки, работающую в облаке.
В консоли GCP щелкните значок Cloud Shell на панели инструментов в правом верхнем углу:

Подготовка и подключение к среде займут всего несколько минут. После завершения вы должны увидеть что-то подобное:

Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Она предоставляет постоянный домашний каталог размером 5 ГБ и работает в облаке Google, что значительно повышает производительность сети и аутентификацию. Всю работу в этой лаборатории можно выполнять с помощью обычного браузера.
Прежде чем начать
Внутри Cloud Shell убедитесь, что идентификатор вашего проекта указан правильно:
PROJECT_ID=your-project-id gcloud config set project $PROJECT_ID
4. Разверните сервис Cloud Run.
Разверните службу Cloud Run для приема событий. Вам потребуется развернуть контейнер Hello от Cloud Run , который будет регистрировать содержимое CloudEvents.
Сначала включите необходимые службы для Cloud Run:
gcloud services enable run.googleapis.com
Разверните контейнер hello в Cloud Run:
REGION=us-central1 SERVICE_NAME=hello gcloud run deploy $SERVICE_NAME \ --allow-unauthenticated \ --image=gcr.io/cloudrun/hello \ --region=$REGION
В случае успеха в командной строке отобразится URL-адрес службы. Вы можете открыть URL-адрес службы в любом окне браузера, чтобы убедиться, что служба развернута.
5. Обнаружение событий
Прежде чем создавать триггеры в Eventarc, вы можете узнать, какие существуют источники событий, какие типы событий они могут генерировать и как настроить триггеры для их обработки.
Чтобы посмотреть список различных типов мероприятий:
gcloud beta eventarc attributes types list NAME DESCRIPTION google.cloud.audit.log.v1.written Cloud Audit Log written google.cloud.pubsub.topic.v1.messagePublished Cloud Pub/Sub message published google.cloud.storage.object.v1.archived Cloud Storage: Sent when a live version of an (object versioned) object is archived or deleted. google.cloud.storage.object.v1.deleted Cloud Storage: Sent when an object has been permanently deleted. google.cloud.storage.object.v1.finalized Cloud Storage: Sent when a new object (or a new generation of an existing object). google.cloud.storage.object.v1.metadataUpdated Cloud Storage: Sent when the metadata of an existing object changes.
Для получения более подробной информации о каждом типе событий:
gcloud beta eventarc attributes types describe google.cloud.audit.log.v1.written attributes: type,serviceName,methodName,resourceName description: 'Cloud Audit Log: Sent when a log is written.' name: google.cloud.audit.log.v1.written
Чтобы просмотреть список служб, генерирующих определенный тип событий:
gcloud beta eventarc attributes service-names list --type=google.cloud.audit.log.v1.written SERVICE_NAME DISPLAY_NAME accessapproval.googleapis.com Access Approval accesscontextmanager.googleapis.com Access Context Manager admin.googleapis.com Google Workspace Admin aiplatform.googleapis.com AI Platform (under Vertex AI) apigee.googleapis.com Apigee apigeeconnect.googleapis.com Apigee Connect ... workflows.googleapis.com Workflows
Чтобы просмотреть список имен методов (подсобытий), которые может генерировать каждая служба:
gcloud beta eventarc attributes method-names list --type=google.cloud.audit.log.v1.written --service-name=workflows.googleapis.com METHOD_NAME google.cloud.workflows.v1.Workflows.CreateWorkflow google.cloud.workflows.v1.Workflows.DeleteWorkflow google.cloud.workflows.v1.Workflows.GetWorkflow google.cloud.workflows.v1.Workflows.ListWorkflows google.cloud.workflows.v1.Workflows.UpdateWorkflow google.cloud.workflows.v1beta.Workflows.CreateWorkflow google.cloud.workflows.v1beta.Workflows.DeleteWorkflow google.cloud.workflows.v1beta.Workflows.GetWorkflow google.cloud.workflows.v1beta.Workflows.ListWorkflows google.cloud.workflows.v1beta.Workflows.UpdateWorkflow
6. Создайте триггер Pub/Sub.
Один из способов получения событий — использование Cloud Pub/Sub. Любое приложение может публиковать сообщения в Pub/Sub, и эти сообщения могут доставляться в Cloud Run через Eventarc.
Настраивать
Перед созданием триггеров необходимо включить соответствующие службы для Eventarc:
gcloud services enable eventarc.googleapis.com
Для работы триггеров также потребуется учетная запись службы. Создайте учетную запись службы:
SERVICE_ACCOUNT=eventarc-trigger-sa gcloud iam service-accounts create $SERVICE_ACCOUNT
Создавать
Создайте триггер для фильтрации событий, публикуемых в тему Pub/Sub, и перенаправляйте их в развернутый сервис Cloud Run:
TRIGGER_NAME=trigger-pubsub gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Тест
Триггер Pub/Sub создает тему в фоновом режиме. Давайте выясним это и присвоим значение переменной:
TOPIC_ID=$(gcloud eventarc triggers describe $TRIGGER_NAME --location $REGION --format='value(transport.pubsub.topic)')
Используйте gcloud для публикации сообщения в указанную тему:
gcloud pubsub topics publish $TOPIC_ID --message="Hello World"
Сервис Cloud Run записывает в лог тело входящего сообщения. Вы можете просмотреть его в разделе «Журналы» вашего экземпляра Cloud Run:

Создать на основе существующей темы Pub/Sub
По умолчанию при создании триггера Pub/Sub Eventarc автоматически создает тему, которую вы можете использовать в качестве транспортной темы между вашим приложением и сервисом Cloud Run. Это удобно для быстрого и простого создания триггера на основе Pub/Sub, но иногда может потребоваться использовать уже существующую тему. Eventarc позволяет указать существующую тему Pub/Sub в том же проекте с помощью флага gcloud --transport-topic topic.
Чтобы увидеть, как это работает, создайте тему Pub/Sub, которую будете использовать в качестве темы для передачи данных:
TOPIC_ID=eventarc-topic gcloud pubsub topics create $TOPIC_ID
Создайте триггер:
TRIGGER_NAME=trigger-pubsub-existing gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --transport-topic=projects/$PROJECT_ID/topics/$TOPIC_ID \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Проверить срабатывание триггера можно, отправив сообщение в указанную тему:
gcloud pubsub topics publish $TOPIC_ID --message="Hello again"
7. Создайте триггер для облачного хранилища.
На этом шаге вы создадите триггер для отслеживания событий из облачного хранилища.
Настраивать
Сначала создайте хранилище (bucket) для получения событий:
BUCKET_NAME=eventarc-gcs-$PROJECT_ID gsutil mb -l $REGION gs://$BUCKET_NAME
Предоставьте учетной записи службы роль eventarc.eventReceiver , чтобы ее можно было использовать в триггере Cloud Storage:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --role roles/eventarc.eventReceiver \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Также необходимо добавить роль pubsub.publisher в учетную запись службы Cloud Storage для запуска триггеров Cloud Storage:
SERVICE_ACCOUNT_STORAGE=$(gsutil kms serviceaccount -p $PROJECT_ID)
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member serviceAccount:$SERVICE_ACCOUNT_STORAGE \
--role roles/pubsub.publisher
Создавать
Создайте триггер для переадресации событий создания новых файлов из хранилища в ваш сервис:
TRIGGER_NAME=trigger-storage gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.storage.object.v1.finalized" \ --event-filters="bucket=$BUCKET_NAME" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Тест
Чтобы подтвердить успешное создание триггера, перечислите все триггеры:
gcloud eventarc triggers list
Загрузите файл в хранилище Cloud Storage:
echo "Hello World" > random.txt gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Если вы проверите журналы службы Cloud Run в Cloud Console, вы должны увидеть полученное событие:

8. Создайте триггер для журналов аудита облака.
Хотя триггер Cloud Storage — лучший способ отслеживать события Cloud Storage, на этом шаге вы создадите триггер Cloud Audit Log для выполнения той же задачи.
Настраивать
Для получения событий от сервиса необходимо включить журналы аудита облака. В консоли облака выберите IAM & Admin , а затем Audit Logs в меню в левом верхнем углу. В списке сервисов отметьте Google Cloud Storage :

В правой части экрана убедитесь, что выбраны параметры Admin , Read и Write , и нажмите Save ».

Создавать
Создайте триггер для переадресации событий создания новых файлов из хранилища в ваш сервис:
TRIGGER_NAME=trigger-auditlog-storage gcloud eventarc triggers create $TRIGGER_NAME\ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.audit.log.v1.written" \ --event-filters="serviceName=storage.googleapis.com" \ --event-filters="methodName=storage.objects.create" \ --event-filters-path-pattern="resourceName=/projects/_/buckets/$BUCKET_NAME/objects/*" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Тест
Для инициализации триггеров журналов аудита требуется некоторое время. Вы можете убедиться в создании триггера, выведя список всех триггеров:
gcloud eventarc triggers list
Вы должны увидеть, что в поле ACTIVE установлено значение Yes :
NAME TYPE DESTINATION ACTIVE trigger-auditlog-storage google.cloud.audit.log.v1.written Cloud Run service: hello Yes
Загрузите в облачное хранилище тот же файл, что и ранее:
gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Если вы проверите журналы службы Cloud Run в Cloud Console, вы должны увидеть полученное событие:

9. Изучите пользовательский интерфейс Eventarc.
На этом этапе вы изучите пользовательский интерфейс Eventarc в консоли Google Cloud. В пользовательском интерфейсе Eventarc вы можете получить обзор всех триггеров, редактировать и удалять их, а также создавать новые триггеры прямо из консоли Google Cloud.
Перейдите в раздел Eventarc в Google Cloud:

Вы увидите список триггеров, которые вы создали ранее:

При нажатии на триггер вы можете просмотреть его подробную информацию, отредактировать или удалить его:

Вы также можете создать новый триггер, выбрав Create trigger и заполнив необходимые данные:

10. Поздравляем!
Поздравляем с завершением практического занятия!
Что мы рассмотрели
- Видение Eventarc
- Найдите мероприятия в Eventarc
- Создайте приемник Cloud Run.
- Создайте триггер для Pub/Sub
- Создайте триггер для облачного хранилища.
- Создайте триггер для журналов аудита облака.
- Изучите пользовательский интерфейс Eventarc.