ブログ

AutoMateをREST Clientとして使う

AutoMateの専用命令であるHTTPアクションはGet、Post、Put、Deleteなどのメソッドが使えるため、HTTPアクション ≒ REST Client機能、と考えられます。前回ブログ「IBMiデータをAutoMateでIBM Cloudへバックアップする」でS3アクションを使いIBMiのバックアップデータをIBM Cloud Object Storage、通称 ICOS(アイコス)へ転送したところを今回はHTTPアクションに置き換えてみました。

また今回はAutoMateにおいてベアラトークンの取得と、よくあるjsonファイルの扱いに関しても解説していますので、他のREST APIを提供するアプリケーション連携設定に役立ちます。

動画で解説

10分の音声付き動画です

前提と動作概要

AutoMate稼働PCに存在する「c:\tmp\SAVF01.SAVF」をIBM Cloud Object Storageインスタンス「Cloud Object Storage-7l」のバケット「cloud-object-storage-7l-cos-standard-t2k」へ転送します。

実際のAutoMate設定は下図のように3行で、やっている事は①アクセストークンの要求、②アクセストークンの取得、③ICOSへファイル転送となります。

①アクセストークンの要求

アクセストークンの取得をするためIBM Cloudのリファレンス
https://cloud.ibm.com/apidocs/iam-identity-token-api#authentication
に記載の以下curl(カール)コマンドをAutoMateのHTTPアクションの設定に読み換えます。

curl -X POST
"https://iam.cloud.ibm.com/identity/token"
--header 'Content-Type: application/x-www-form-urlencoded'
--header 'Accept: application/json'
--data-urlencode 'grant_type=urn:ibm:params:oauth:grant-type:apikey'
--data-urlencode 'apikey=<API_KEY>'

読み換え準備として最後の行「--data-urlencode 'apikey=<API_KEY>'」の「<API_KEY>」を事前に調べます。この「<API_KEY>」はCloud Object Strage管理画面のサービス資格情報の「apikey」に続く文字列(下図の場合kFNBnH・・・・)になります。この資格情報は下図のようなICOS内にバケット作成時、自動生成されたサービス資格情報の鍵名でも機能しました。

AutoMateのHTTPメソッドには①Postを選択し、②URL欄にはhttps://iam.cloud.ibm.com/identity/tokenを指定すれば良さそうです。HTTPメソッドがPostなのでフォームに入力するような感じにするため③投稿タイプを「フィールド」に指定すると④「フィールドの要求」が現れ、表のように記述可能となります。ここには上記--data-urlencodeで始まる2行をそれぞれ指定します。
アクセストークンを含む要求結果を保存するため⑤データセットを作成してデータを設定する欄に「ds_results」と指定しました。(名前はなんでもかまいません)
最後に--headerを指定するため⑥詳細の大きな下矢印アイコンをクリックします。

①Cntent-Type(オプション)欄に--header 'Content-Type: application/x-www-form-urlencoded'の「application/x-www-form-urlencoded」部分を指定し、②リクエストヘッダーには--header 'Accept: application/json'の「Accept: application/json」の部分を名前:値として指定し、必須ではありませんが③「説明」タブをクリックし「カスタムステップの説明を使用」にチックを入れ、説明として「アクセストークンを取得する要求結果をds_resultsに格納」としてしOKボタンで保存します。

「①アクセストークンの要求」を実行し結果を確認

下図①実行をすると要求結果がデータセットds_resultsに格納されます。下に位置する変数参照欄からds_resultsを展開すると③「ds_results(1).Data」に{"access_token":eyJra・・・・}の存在が確認できます。この"access_token": 以降の文字列を切り出しアクセストークンとして使います。

②アクセストークンの取得

アクセストークンの切り出しにはJSONアクションの①「デコード」を用いると簡単です。②JSON文字列として先に確認した「ds_results(1).Data」を変数として利用するため、AutoMateお作法に従い前後に%を付加し「%ds_results.Data%」と指定しました。③デコード結果を「jsonObj」と指定した後④「説明」タブをクリックします。「カスタムステップの説明を使用」にチックを入れ、説明として「ds_resultsを扱いやすいオブジェクトjsonObjへ変換」と入力後OKボタンで保存します。

「②アクセストークンの取得」を実行し結果を確認

①実行をするとds_results.DataがデコードされjsonObjに格納されます。下に位置する変数参照欄から②jsonObjを展開すると③「jsonObj.access_token」にアクセストークンのみが切り出されている事が分かります。

③ICOSへファイル転送

ICOSへファイル転送するにはIBM Cloudのリファレンス
https://cloud.ibm.com/apidocs/cos/cos-compatibility#putobject
に記載の以下curl(カール)コマンドをAutoMateのHTTPアクションの設定に読み換えます。

curl -X "PUT" "https://(endpoint)/(bucket-name)/(object-key)"
-H "Authorization: bearer (token)"
-H "Content-Type: (content-type)"
-d "(object-contents)"

読み換え準備として一行目の「https://(endpoint)/(bucket-name)/(object-key)」の(endpoint)を事前に調べます。(endpoint)はICOSエンドポイント名なので、転送先バケット名の管理画面の「構成」タブで表示される「次へ移動」内の「エンドポイント」で進むと表示される「パブリック」欄で確認可能です。

AutoMateのHTTPメソッドには①Putを選択し、②URL欄にはhttps://(ICOSエンドポイント名)/(転送先バケット名)/(転送したファイルの表示名)を指定するので「https://s3.jp-tok.cloud-object-storage.appdomain.cloud/cloud-object-storage-7l-cos-standard-t2k/SAVF01.SAVF」としました。
今回はファイル転送なので③タイプからファイルを選択し④PCのローカルに保存しているファイルパスを指定しました。必須ではありませんが転送状態を確認したいので⑤「データセットを作成してデータを設定する」欄に「ds_putResults」と指定しました。
-H "Authorization: bearer (token)"を指定したいので⑥詳細をクリックします。

下図「リクエストヘッダー」の名前欄にAuthorization、値欄にはbearer (token)を指定します。bearerは固定値として指定し、 (token)は「アクセストークンの取得を実行し結果を確認」で取得した「jsonObj.access_token」を変数として指定するため%記号で囲み「bearer %jsonObj.access_token%」と指定しました。

関連リンク

お問合せ
https://alpcom.co.jp/contact/

アルファー・コミュニケーションズ公式YouTube
https://www.youtube.com/channel/UCTqwZsRRpAs9NPTUz2yH3ow/videos

データ活用支援サービス
https://alpcom.co.jp/products/data_utilization/

pagetop