1. Введение
В этой лаборатории кода мы перечислили шаги по публикации события в API Google Cloud Pub/Sub с использованием ABAP SDK для Google Cloud .
В этой лаборатории кода используются следующие сервисы Google Cloud:
- Паб/Саб
- Облачная оболочка
Что ты построишь
Вы узнаете следующее:
- Включите Pub/Sub в проекте Google Cloud.
- Создайте тему Pub/Sub.
- Публикуйте сообщения.
2. Прежде чем начать
- В вашей системе установлен ABAP SDK для Google Cloud . Вы можете обратиться к кодовой лаборатории «Установить пробную версию ABAP на Google Cloud Platform » для настройки новой системы.
- Вы используете Cloud Shell , среду командной строки, работающую в Google Cloud. В Cloud Console нажмите «Активировать Cloud Shell» в правом верхнем углу:
- Выполните следующие команды для аутентификации своей учетной записи и установите проект по умолчанию
abap-sdk-poc
. В качестве примера используется зонаus-west4-b
. При необходимости измените проект и зону с помощью следующих команд в соответствии с вашими предпочтениями.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b
3. Обзор
Область применения этой лаборатории включает в себя следующие компоненты службы Pub/Sub:
- Издатель (также называемый производителем): создает сообщения и отправляет (публикует) их в службу обмена сообщениями по указанной теме.
- Сообщение: данные, которые проходят через службу обмена сообщениями.
- Тема: именованный объект, представляющий поток сообщений.
4. Настройте службу Pub/Sub.
- Чтобы создать сервисную учетную запись с необходимой ролью, выполните следующую команду в терминале Cloud Shell:
gcloud iam service-accounts create abap-sdk-pubsub-tester --display-name="Service Account for PubSub"
- Чтобы включить API Pub/Sub для вашей учетной записи службы (
abap-sdk-poc
), выполните следующую команду в терминале Cloud Shell:
gcloud services enable pubsub.googleapis.com
- Предоставьте роль IAM pubsub.topics.create учетной записи службы, чтобы иметь возможность создавать темы. Выполните следующую команду в терминале облачной оболочки:
gcloud endpoints services add-iam-policy-binding pubsub.googleapis.com \ --member='serviceAccount:abap-sdk-pubusb-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/roles/pubsub.topics.create'
- Предоставьте роль IAM pubsub.topics.publish учетной записи службы, чтобы иметь возможность публиковать сообщения в теме. Выполните следующую команду в терминале облачной оболочки:
gcloud endpoints services add-iam-policy-binding pubsub.googleapis.com \ --member='serviceAccount:abap-sdk-pubusb-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/roles/pubsub.topics.publish'
- Чтобы убедиться, что роли добавлены, перейдите на страницу IAM . Созданная вами учетная запись службы должна быть указана вместе с назначенными ей ролями.
5. Настройте ключ клиента
Чтобы сохранить конфигурацию в таблице /GOOG/CLIENT_KEY
, выполните следующие действия:
- В графическом интерфейсе SAP введите код транзакции SPRO .
- Щелкните Справочное IMG SAP .
- Нажмите ABAP SDK для Google Cloud > Основные настройки > Настроить ключ клиента .
- Нажмите «Новые записи» .
- Введите значения в следующие поля:
Поле | Описание |
Имя облачного ключа Google | PUBSUB_DEMO |
Имя учетной записи облачной службы Google | abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com |
Облачная область Google | https://www.googleapis.com/auth/cloud-platform |
Идентификатор проекта Google Cloud | abap-sdk-poc |
Класс авторизации | /GOOG/CL_AUTH_GOOGLE |
Остальные поля оставьте пустыми
6. Создайте тему
Вы создаете тему, используя метод CREATE_TOPICS заглушки API /GOOG/CL_PUBSUB_V1. Сигнатура метода:
- В графическом интерфейсе SAP введите код транзакции SE38 .
- Создайте отчет с именем ZPUBSUB_DEMO .
- В открывшемся всплывающем окне укажите детали, как показано ниже, и нажмите «Сохранить».
- В следующем всплывающем окне выберите «Локальный объект» или укажите имя пакета, если это необходимо.
- В редакторе ABAP добавьте следующий код:
" Data Declaration
DATA:
lo_client TYPE REF TO /goog/cl_pubsub_v1.
TRY.
" Open HTTP Connection
CREATE OBJECT lo_client EXPORTING iv_key_name = 'PUBSUB_DEMO'.
" Populate relevant parameters
DATA(lv_p_projects_id) = CONV string( lo_client->gv_project_id ).
DATA(lv_p_topics_id) = CONV string( 'PUBSUB_DEMO_TOPIC' ).
" Call API method pubsub.topics.create
lo_client->create_topics(
EXPORTING
iv_p_projects_id = lv_p_projects_id
iv_p_topics_id = lv_p_topics_id
IMPORTING
es_output = DATA(ls_output)
ev_ret_code = DATA(lv_ret_code)
ev_err_text = DATA(lv_err_text)
es_err_resp = DATA(ls_err_resp) ).
IF lo_client->is_success( lv_ret_code ) = abap_true.
DATA(lv_msg) = 'Topic ' && ':' && lv_p_topics_id && ' was created!'.
MESSAGE lv_msg TYPE 'I' .
ELSE.
MESSAGE lv_err_text TYPE 'E'.
ENDIF.
" Close HTTP Connection
lo_client->close( ).
CATCH /goog/cx_sdk INTO DATA(lo_exception).
MESSAGE lo_exception->get_text( ) TYPE 'E'.
RETURN.
ENDTRY.
- Сохраните и активируйте отчет.
- Выполнить отчет (F8).
В случае успешного выполнения вы должны увидеть выходные данные отчета, как показано ниже:
7. Опубликовать сообщение в теме
Когда тема готова к работе, мы можем сосредоточиться на отправке данных. В качестве следующего шага научимся публиковать сообщения на эту тему. Сообщения публикуются в теме с помощью метода PUBLISH_TOPICS
API-заглушки /GOOG/CL_PUBSUB_V1
.
Сигнатура метода:
- В графическом интерфейсе SAP введите код транзакции SE38.
- Создайте отчет с именем ZPUBSUB_DEMO_PUBLISH .
- В открывшемся всплывающем окне укажите детали, как показано ниже, и нажмите «Сохранить».
- В следующем всплывающем окне выберите «Локальный объект» или укажите имя пакета, если это необходимо.
- В редакторе ABAP добавьте следующий код:
" Data Declaration
DATA:
lo_client TYPE REF TO /goog/cl_pubsub_v1,
ls_message TYPE /goog/cl_pubsub_v1=>ty_025,
ls_input TYPE /goog/cl_pubsub_v1=>ty_023.
TRY.
" Open HTTP Connection
CREATE OBJECT lo_client EXPORTING iv_key_name = 'PUBSUB_DEMO'.
" Populate relevant parameters
DATA(lv_p_projects_id) = CONV string( lo_client->gv_project_id ).
DATA(lv_p_topics_id) = CONV string( 'PUBSUB_DEMO_TOPIC' ).
ls_message-data = cl_http_utility=>encode_base64( unencoded = ' This message was published to topic' ).
APPEND ls_message TO ls_input-messages.
" Call API method : pubsub.topics.publish
" This method publishes the message(encoded in base64 format to the topic )
lo_client->publish_topics(
EXPORTING
iv_p_projects_id = lv_p_projects_id
iv_p_topics_id = lv_p_topics_id
is_input = ls_input
IMPORTING
es_output = DATA(ls_output)
ev_ret_code = DATA(lv_ret_code)
ev_err_text = DATA(lv_err_text)
es_err_resp = DATA(ls_err_resp) ).
IF lo_client->is_success( lv_ret_code ) = abap_true.
DATA(lv_msg) = 'Message was published to topic ' && ': ' && lv_p_topics_id.
MESSAGE lv_msg TYPE 'I' DISPLAY LIKE 'S'.
ELSE.
MESSAGE lv_err_text TYPE 'E'.
ENDIF.
" Close HTTP Connection
lo_client->close( ).
CATCH /goog/cx_sdk INTO DATA(lo_exception).
MESSAGE lv_err_text TYPE 'E'.
RETURN.
ENDTRY.
- Сохраните и активируйте отчет.
- Выполнить отчет (F8).
В случае успешного выполнения вы должны увидеть выходные данные отчета, как показано ниже:
8. Поздравления
Поздравляем! Вы успешно опубликовали сообщение в API Pub/Sub Google Cloud Platform с помощью ABAP SDK для Google Cloud.
Теперь вы можете приступить к выполнению приведенной ниже таблицы кода и продолжить обучение использованию ABAP SDK для доступа к различным облачным службам Google.
- Получить событие из Cloud Pub/Sub
- Загрузите файл в корзину облачного хранилища с помощью фрагментации
- Вызов Vertex AI test-bison из ABAP
- . . .
9. Очистка
Если вы не хотите продолжать работу с дополнительными лабораториями кода, связанными с ABAP SDK для Google Cloud, продолжите очистку.
Удалить проект
- Удалите проект Google Cloud:
gcloud projects delete abap-sdk-poc
Удаление отдельных ресурсов
- Удалите вычислительный экземпляр:
gcloud compute instances delete abap-trial-docker
- Удалите правила брандмауэра:
gcloud compute firewall-rules delete sapmachine
- Удалить сервисный аккаунт:
gcloud iam service-accounts delete \
abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com