1. Introduction
Dans cet atelier de programmation, nous avons listé les étapes à suivre pour publier un événement dans 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 allez apprendre 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 consulter l'atelier de programmation Installer l'essai ABAP sur Google Cloud Platform pour configurer un nouveau système.
- Vous utilisez 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 concerne les composants suivants d'un service Pub/Sub:
- Éditeur (également appelé "producteur"): crée des messages et les envoie (publie) au service de messagerie sur un sujet spécifié.
- Message: données transmises via le service de messagerie.
- Sujet: 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 dans 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 qu'il puisse publier un message dans 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 gérer la configuration dans la table /GOOG/CLIENT_KEY
, procédez comme suit:
- Dans l'IUG 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 bouchon d'API /GOOG/CL_PUBSUB_V1. Signature de la méthode:
- Dans l'IUG de SAP, saisissez le code de transaction SE38.
- Créez un rapport intitulé ZPUBSUB_DEMO.
- Dans le pop-up qui s'affiche, fournissez les informations indiquées ci-dessous, puis cliquez sur Enregistrer.
- Dans la fenêtre pop-up suivante, sélectionnez Objet local ou indiquez un nom de package, le cas échéant.
- 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, le résultat du rapport s'affiche comme suit:
7. Publier un message dans le sujet
Maintenant que le sujet est prêt, nous pouvons nous concentrer sur l'envoi de données. À l'étape suivante, voyons comment publier des messages sur ce sujet. Les messages sont publiés sur le sujet à l'aide de la méthode PUBLISH_TOPICS
du bouchon d'API /GOOG/CL_PUBSUB_V1
.
Signature de la méthode:
- Dans l'IUG de SAP, saisissez le code de transaction SE38.
- Créez un rapport intitulé ZPUBSUB_DEMO_PUBLISH.
- Dans le pop-up qui s'affiche, fournissez les informations indiquées ci-dessous, puis cliquez sur Enregistrer.
- Dans la fenêtre pop-up suivante, sélectionnez Objet local ou indiquez un nom de package, le cas échéant.
- 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, le résultat du rapport s'affiche comme suit:
8. Félicitations
Félicitations ! Vous avez publié 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 à apprendre à utiliser le SDK ABAP pour accéder à divers services Google Cloud.
- Recevoir un événement à partir de Cloud Pub/Sub
- Importer un fichier dans un bucket Cloud Storage avec le fractionnement
- Appeler Vertex AI test-bison à partir d'ABAP
- . . .
9. Effectuer un nettoyage
Si vous ne souhaitez pas poursuivre les ateliers de programmation supplémentaires liés au SDK ABAP pour Google Cloud, veuillez procéder 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