1. Introduction
Dans cet atelier de programmation, nous avons listé les étapes à suivre pour publier un événement sur l'API Google Cloud Pub/Sub à l'aide du SDK ABAP pour Google Cloud.
Les services Google Cloud suivants sont utilisés dans cet atelier de programmation :
- Pub/Sub
- Cloud Shell
Ce que vous allez faire
Vous apprendrez les points suivants :
- Activer Pub/Sub dans un projet Google Cloud
- Créer un sujet Pub/Sub
- Publier des messages.
2. Avant de commencer
- Vous avez installé le SDK ABAP pour Google Cloud sur votre système. Vous pouvez vous référer à l'atelier de programmation Installer ABAP Trial sur Google Cloud Platform pour configurer un nouveau système.
- Vous allez utiliser Cloud Shell, un environnement de ligne de commande exécuté dans Google Cloud. Dans la console Cloud, cliquez sur Activer Cloud Shell en haut à droite :
- Exécutez les commandes suivantes pour vous authentifier pour votre compte et définir le projet par défaut sur
abap-sdk-poc
. La zoneus-west4-b
est utilisée comme exemple. Si nécessaire, veuillez modifier le projet et la zone dans les commandes suivantes en fonction de vos préférences.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b
3. Présentation
Cet atelier de programmation porte sur les composants suivants d'un service Pub/Sub :
- Éditeur (également appelé producteur) : crée des messages et les envoie au service de messagerie (c'est-à-dire les publie) dans un sujet spécifié
- Message : les données qui transitent par le service de messagerie.
- Sujet : une entité nommée qui représente un flux de messages.
4. Configurer le service Pub/Sub
- Pour créer un compte de service avec le rôle requis, exécutez la commande suivante dans le terminal Cloud Shell :
gcloud iam service-accounts create abap-sdk-pubsub-tester --display-name="Service Account for PubSub"
- Pour activer l'API Pub/Sub pour votre compte de service (
abap-sdk-poc
), exécutez la commande suivante dans le terminal Cloud Shell :
gcloud services enable pubsub.googleapis.com
- Attribuez le rôle IAM pubsub.topics.create au compte de service pour pouvoir créer un sujet. Exécutez la commande suivante dans le terminal Cloud Shell :
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'
- Attribuez le rôle IAM pubsub.topics.publish au compte de service pour pouvoir publier un message sur le sujet. Exécutez la commande suivante dans le terminal Cloud Shell :
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'
- Pour vérifier que les rôles ont été ajoutés, accédez à la page IAM. Le compte de service que vous avez créé doit être listé avec les rôles qui lui ont été attribués.
5. Configurer la clé client
Pour conserver la configuration dans le tableau /GOOG/CLIENT_KEY
, procédez comme suit :
- Dans l'interface utilisateur graphique de SAP, saisissez le code de transaction SPRO.
- Cliquez sur SAP Reference IMG.
- Cliquez sur SDK ABAP pour Google Cloud > Paramètres de base > Configurer la clé client.
- Cliquez sur Nouvelles entrées.
- Renseignez les champs suivants :
Champ | Description |
Nom de la clé Google Cloud | PUBSUB_DEMO |
Nom du compte de service Google Cloud | abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com |
Champ d'application Google Cloud | https://www.googleapis.com/auth/cloud-platform |
Identifiant de projet Google Cloud | abap-sdk-poc |
Classe d'autorisation | /GOOG/CL_AUTH_GOOGLE |
Laissez les autres champs vides.
6. Créer un sujet
Vous créez un sujet à l'aide de la méthode CREATE_TOPICS du stub d'API /GOOG/CL_PUBSUB_V1. Signature de la méthode :
- Dans l'interface utilisateur graphique de SAP, saisissez le code de transaction SE38.
- Créez un rapport nommé ZPUBSUB_DEMO.
- Dans le pop-up qui s'affiche, fournissez les informations comme indiqué ci-dessous, puis cliquez sur Enregistrer.
- Dans la fenêtre pop-up suivante, sélectionnez Objet local ou indiquez un nom de package, selon le cas.
- Dans l'éditeur ABAP, ajoutez le code suivant :
" 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.
- Enregistrez et activez le rapport.
- Exécutez le rapport (F8).
Si l'exécution réussit, vous devriez voir le résultat du rapport comme indiqué ci-dessous :
7. Publier un message dans le sujet
Maintenant que le sujet est prêt, nous pouvons nous concentrer sur l'envoi de données. Nous allons maintenant apprendre à publier des messages dans ce sujet. Les messages sont publiés dans le sujet à l'aide de la méthode PUBLISH_TOPICS
du stub d'API /GOOG/CL_PUBSUB_V1
.
Signature de la méthode :
- Dans l'interface utilisateur graphique de SAP, saisissez le code de transaction SE38.
- Créez un rapport nommé ZPUBSUB_DEMO_PUBLISH.
- Dans le pop-up qui s'affiche, fournissez les informations comme indiqué ci-dessous, puis cliquez sur Enregistrer.
- Dans la fenêtre pop-up suivante, sélectionnez Objet local ou indiquez un nom de package, selon le cas.
- Dans l'éditeur ABAP, ajoutez le code suivant :
" 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.
- Enregistrez et activez le rapport.
- Exécutez le rapport (F8).
Si l'exécution réussit, vous devriez voir le résultat du rapport comme indiqué ci-dessous :
8. Félicitations
Félicitations ! Vous avez réussi à publier un message dans l'API Pub/Sub de Google Cloud Platform à l'aide du SDK ABAP pour Google Cloud.
Vous pouvez maintenant suivre l'atelier de programmation ci-dessous pour continuer votre parcours d'apprentissage sur l'utilisation du SDK ABAP pour accéder à divers services Google Cloud.
- Recevoir un événement depuis Cloud Pub/Sub
- Importer un fichier dans un bucket Cloud Storage avec segmentation
- Appeler Vertex AI test-bison depuis ABAP
- . . .
9. Effectuer un nettoyage
Si vous ne souhaitez pas continuer avec les ateliers de programmation supplémentaires liés au SDK ABAP pour Google Cloud, passez au nettoyage.
Supprimer le projet
- Supprimez le projet Google Cloud :
gcloud projects delete abap-sdk-poc
Supprimer des ressources individuelles
- Supprimez l'instance de calcul :
gcloud compute instances delete abap-trial-docker
- Supprimez les règles de pare-feu :
gcloud compute firewall-rules delete sapmachine
- Supprimez le compte de service :
gcloud iam service-accounts delete \
abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com