はじめに
こんにちは。すぎもんです
HULFT Square にはURLを公開して外部から実行することが出来ます。(REST APIジョブ機能)
詳細は以前、Web APIとして公開して、外部サーバから HTTPリクエストで実行してみたという記事を公開したので見て頂けたら幸いです。
今回は、実行する際に、リフレッシュトークンを使用してアクセストークンを更新してから実行してみようと思います。
リフレッシュトークンは、アクセストークンの有効期限が切れた際に新しいアクセストークンを取得するために使用されるセキュリティトークンです。
これにより頻繁にログイン、更新をする必要がなくなります。
今回やること
1 ) HULFT SquareでREST APIジョブを作成する
➀外部からのHTTPリクエストで実行するスクリプトの作成
➁APIプロジェクト作成
➂APIクライアント作成
➃REST APIジョブ作成
➄リフレッシュトークンの取得
2 ) オンプレミスから実行する
➀Windows PowerShell作成
➁実行、確認
1 ) HULFT SquareでREST APIジョブを作成する
➀外部からのHTTPリクエストで実行するスクリプトの作成
今回はBoxドライブにあるファイルをAmazonS3にアップロードするスクリプトを実行します。
・プロジェクト名 :プロジェクト
・スクリプト名 :Cloud
実際に扱うCSVファイルには、このようなデータが格納されています。
➁APIプロジェクト作成
ここでは、作成したプロジェクトを、Web APIとして公開するための設定をします。
HTTP RESTのエンドポイントとなるURLの基本パス(実行するパスの一部)を作成したり、実行スクリプトと紐づけするHTTPメソッドを管理したりします。
設定は、「ナビゲーションメニュー > APIマネジメント > APIプロジェクト」から設定出来ます。
・名前 : API_Project
・基本パス : API_Project_Path
作成出来たら「次へ」を押して「サマリー」ページがでましたら完了を押します。
APIプロジェクト全体のページがでましたら、リソース(※赤枠アイコン)を作成してHTTPメソッドを設定します。
リソースに「HTTPメソッドを追加 > GET」を追加します。
HTTPリクエストで実行するスクリプトの設定
ここでは、実行させるスクリプトを指定します。
今回は実行させるだけなので、実行スクリプトの設定をします。
<実行スクリプト>
設定(1)
・プロジェクト :プロジェクト
➀で作成したプロジェクト
・バージョン :※最新バージョン
・スクリプト :Cloud
➀で作成したスクリプト
設定(2)
「依存関係
」ボタンをクリックし「適用
」を押します。
APIプロジェクトのリソースの設定画面に戻ります。
依存関係とは
「依存関係」機能は最新版のHULFT Squareに備わった機能です。
これを使用することで、スクリプトで追加開発などをした際に自動で実行するスクリプトを最新版にバージョンアップさせることが出来ます。
ここまで出来ましたら、APIプロジェクトのリソースの設定画面一番下の「適用
」を押すことで設定を保存できます。
➂APIクライアント作成
ここでは、作成したAPIにアクセスできるメンバーの設定や、実行可能なIPアドレス許可リストを設定します。
設定は、「ナビゲーションメニュー > APIマネジメント > APIクライアント」から設定出来ます。
名前 : API_client
メンバー : ※自分のアカウント
IPアドレス許可リスト:※HTTP RESTリクエストをする外部サーバのIPアドレス
「IPアドレス許可リスト」は何も指定しない場合はフルオープンになります。
ここまで出来ましたら、APIクライアントの設定が完了しました。
➃REST APIジョブ作成
ここでは、作成済みのAPIプロジェクトをウェブブラウザやツールなどからのHTTP RESTリクエストによって実行可能にするジョブを作成できます。
設定は、「ナビゲーションメニュー > ジョブ > REST APIジョブ」から設定出来ます。
新規追加
を押下したあと作成していきます。
ワークスペース : 実行するワークスペース
APIプロジェクト : API_Project_Path
※「➁APIプロジェクト作成」の基本パス
APIプロジェクトバージョン :最新バージョン ※更新ごとにバージョンが上がります
リソースを読み込むためのプロファイル : ※実行するプロファイルを選択
APIクライアント : API_client
※「➂APIクライアント作成」で作成した名前
「スクリプト実行のためのサービス」を設定し「次へ」を押下したあとに全体のサマリーが出ます。
設定内容を確認して、完了を押下します。
REST APIジョブが作成できました。
一覧から、作成した「API_Project_Path」が確認出来ます。
登録したAPIプロジェクトの右にある を選択すると、操作メニューが表示されます。
「情報」を押下してください。
HTTPリクエストで使用するエンドポイントとなるURLが自動生成されているので確認できます。
これで、実行するためのエンドポイントとなるURLが取得出来ます。
➄リフレッシュトークンの取得
ここでは、リフレッシュトークンを取得します。
「➂APIクライアント作成」の「メンバー」で、Web APIへアクセスできるユーザを設定しましたので、メンバーに設定したユーザで実行する為に期限が切れていない最新のアクセストークンが必要になります。
自動で更新した後のアクセストークンを取得するためのリフレッシュトークンを取得します。
リフレッシュトークンとは、HULFT SquareのWeb画面ではなく、お客様環境のプログラムでAPIからアクセストークンを更新する際に使用するものです。
HULFT Square管理画面の右上にあるユーザ情報の「個人設定」を選択します。
「個人設定>アクセストークン」の「アクセストークンを生成」を押下したあと
「リフレッシュトークン」をコピーします。
これで実行する為の設定が完了しました。
2 ) オンプレミスから実行する
➀Windows PowerShell作成
ここでは、Windows PowerShellで実行出来るようにファイルを作成します。
下記コマンドの(1)(2)(3)(4)を変更して.ps1
といった拡張子のファイルとして保存します。
# Step 1 : メールとパスワードを使ってログインAPIでアクセストークンを取得する
$email = "<(1)メールアドレス>"
$password = "<(2)パスワード>"
$response = Invoke-WebRequest -Uri "https://app.square.hulft.com/v1/users/login" -ContentType "application/json" -Method POST -Body "{""email"": ""$email"",""password"": ""$password""}"
$accessTokenEmailPassword = (ConvertFrom-Json $($response.Content)).accessToken
# Step 2 : リフレッシュトークンを使用して、Login APIでアクセストークンを取得する
$refreshToken = "<(3)リフレッシュトークン>"
$response = Invoke-WebRequest -Uri "https://app.square.hulft.com/v1/rest-api-token" -ContentType "application/json" -Headers @{"Authorization" = "Bearer $accessTokenEmailPassword"} -Method POST -Body "{""refreshToken"": ""$refreshToken""}"
$accessToken = (ConvertFrom-Json $($response.Content)).accessToken
# Step 3 : 取得したアクセストークンを使ってHTTPクライアントからREST API Job Endpointを実行する
$url = "https://<(4)REST APIジョブのURL>"
$response = Invoke-WebRequest -Uri $url -ContentType "application/json" -Headers @{"Authorization" = "Bearer $accessToken"} -Method GET
# Print the response
$response.Content
要素 | 説明 |
---|---|
(1)メールアドレス | HULFT Squareにログインする際に使用したメールアドレス |
(2)パスワード | HULFT Squareにログインする際に使用したパスワード |
(3)リフレッシュトークン | 「➄リフレッシュトークンの取得」で取得したもの |
(4)REST APIジョブのURL | 「➃REST APIジョブ作成」で発行したURL |
今回は上記のコマンドをrun_steps.ps1
というファイル名にしてCドライブ直下に保存します。
ここまでで、実行するファイルの作成は完了です。
➁実行、確認
ここからは、実際にPSファイルを実行してみます。
実行には下記のコマンドを使います。
powershell -ExecutionPolicy Bypass -Command "& { C:\run_steps.ps1 }"
今回はどこのファイルパスでも実行できるようにフルパスで指定しましたが、Cドライブから実行する場合は、"& { .\run_steps.ps1 }"
に変えても大丈夫です。
今回は、コマンドプロンプトで実行します。
実行出来たかHULFT Squareのログを確認してみます。
「 > 監査 > REST APIジョブアクセスログ」を開くことで実行出来たか確認することが出来ます。
ステータスコードが200になっているのが確認出来ます。
AmazonS3も確認してみます。
無事に格納されているのが確認出来ます。
最後に
いかがでしたでしょうか。外部のサーバーから実行させる際にアクセストークン毎度を更新する作業がコマンドで出来れば楽になるかと思います。
今回は、コマンドで実行してみましたが、バッチファイルにしたり、オンプレミスのシステムと連携させるのに長期的に任意のタイミングで実行させることが出来るので、使い方の幅が広がるのではないでしょうか。
このブログでは、今後も様々なTopics記事や接続検証等、皆さんの参考になるような記事を投稿していきたいと思います!
ここまで読んでいただきありがとうございました。それでは、また!