4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SAP Integration Suite を bashで触ってみよう

Posted at

はじめに

この記事は SAP Advent Calendar 2021 の12月17日分の記事として執筆しています。

皆様、SAP Integration Suite で遊んでおられますでしょうか。
実行したのは良いけども、Web から 実行結果のステータスを確認するのが面倒くさいとお嘆きの貴方のため
今回は日本全国で1億人を超える方々が大好きな bash を使って、SAP Integration Suite を触りたいと思います。
また、以前投稿したSAP Integration Suite でかんたんな WebAPI を作ってみた
の続き記事となります。

必要なもの

今回の bash では、以下2つを使用します。
事前のインストールをお願いします。

  • curl
  • jq

また 以下の環境で作成しています。

MacBook-Pro:git hiroakiueda$ bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin19)
Copyright (C) 2007 Free Software Foundation, Inc.

事前準備

まずは対象の SAP Integration Suite を準備してください。
準備の仕方は、コチラをご覧ください。
参照: SAP Integration Suite でかんたんな WebAPI を作ってみた

SAP Integration Suite で WebAPI の作成と実行は出来ましたね?
ここからは、前回記事で実行したWebAPI の実行ステータスを bash から確認しましょう。

使用するAPI の紹介

では、実行ステータスを確認するためのAPI を紹介します。

今回は、Message Processing Logs を使用したいと思います。
API の 詳細は SAP API Business Hub をご参照ください。

ServiceKey の発行

SAP API Business Hub にて提供されているAPI 呼び出しに必要な認証情報を準備していきます。
以前と同じく、 Process Integration Runtime を作成するのですが、 SAP API Business Hub のAPIを呼ぶためには
インスタンス作成時の 指定Plan の設定が異なることを注意してください。

img1.png
img2.png
img3.png
img4.png
img5.png
img6.png
作成した ServiceKey の情報を確認します。
赤枠で囲った箇所は、後ほど使用します。
img7.png

Bash の作成

それではAPI の呼び出しに必要な ServiceKey とURL が揃ったので、 Bash のスクリプト作成に入ります。

#!/bin/bash

# config
cpi_token_url='<ここに ServiceKey の tokenurl>?grant_type=client_credentials'
cpi_client_id='<ここに ServiceKey の clientid>'
cpi_client_sec='<ここに ServiceKey の clientseqret>'

# get access token
res_acctoken=$(curl -X POST $cpi_token_url \
    -d "client_id=${cpi_client_id}&client_secret=${cpi_client_sec}"
)

if echo $res_acctoken | grep -q 'access_token'; then
    cpi_oauth_token=$(echo $res_acctoken | jq -j '.access_token')
else
    echo $res_acctoken | jq -r '.error + " error:\n" + .error_description'
    exit 1
fi

# call MessageProcessingLogs
logurl='<ここに ServiceKey の url>/api/v1/MessageProcessingLogs?$format=json'

res_log=$(curl --location --request GET $logurl \
    --header "Authorization: Bearer $cpi_oauth_token" 
)
echo $res_log | jq .

bashの詳細

Access Token 取得

API は OAuth2 の認可制御化で呼び出しが可能です。
認可制御のためには、 Access Token の取得が必要です。
Access Token を使用することで、認可された API の実行が出来るようになります。

# get access token
res_acctoken=$(curl -X POST $cpi_token_url \
    -d "client_id=${cpi_client_id}&client_secret=${cpi_client_sec}"
)

ここでは、SAP BTP Cockpit で作成した情報を用いて、Access Token をサーバから取得しています。

Access Token の取り出し

Access Token の取得通信は、Json 形式でAccess Token を受け取るので、jq を使用して切り出します。

if echo $res_acctoken | grep -q 'access_token'; then
    cpi_oauth_token=$(echo $res_acctoken | jq -j '.access_token')
else
    echo $res_acctoken | jq -r '.error + " error:\n" + .error_description'
    exit 1
fi

API の呼び出し

先程取得してきた Access Token を使用して、本命のAPI を呼び出します。
SAP API Business Hub を利用した API 呼び出しでは、Bearer認証で Token を渡します。

# call MessageProcessingLogs
logurl='<ここに ServiceKey の url>/api/v1/MessageProcessingLogs?$format=json'

res_log=$(curl --location --request GET $logurl \
    --header "Authorization: Bearer $cpi_oauth_token" 
)

APIは、SAP API Business Hub を見ていただけばわかるのですが、OData でのリクエストが可能です。
諸条件を指定する場合は、URLEncode済 の文字列を logurl へ指定する必要があります。

最後に

今回は実行ログを取得する仕組みを紹介いたしました。
今後の拡張として 取得結果を slack などのツールへ投稿する等のな使い方が出来ます。
皆様の次の構想を広げるお手伝いが出来ればと思います。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?