Product Information
SiriでSAP HANA Cloudを起動する
Cloud Foundry CLIを活用して、SAP HANA Cloudを起動する方法を紹介します。
iPadのSiriで「SAP HANA Cloudを起動」と呼びかけるとデータベースが起動します。
前提条件
- SAP HANA CloudデータベースのあるSAP BTPアカウント(トライルアカウントでも可)
- Shortcuts アプリのあるiOSデバイス
Cloud Foundry CLIを知る
Cloud Foundryのコマンドラインインターフェース(CLI)を使うと、SAP HANA Cloudを含むSAP BTPサービスを管理できます。
Cloud Foundry専用のCLIツールをダウンロードして cf コマンドでログインしてから操作することも可能ですが、今回はPostmanを使ってCloud Foundryへのリクエストを試します。
HANA Cloudの起動リクエストをBTPに送信するには下記の3つが必要です:
- Cloud Foundry API Endpoint
- SAP HANA Cloud Instance ID
- 管理者ユーザー&パスワード
SAP HANA Cloudが置かれているCloud Foundryエンドポイントを調べます。
SAP BTP CockpitのOrganizationを開くとCloud Foundry API Endpointの情報がリンクとして表示されます。
上記のスクリーンショットではUS10データセンターを使用しています。
そしてSAP HANA CloudのインスタンスIDも、SAP BTP Cockpitから取得します。
認証
SAP BTPにリクエストを送るためにはまず認証しなければなりません。
POSTリクエストでユーザーとパスワードをCloud Foundry Loginエンドポイントに送信して、OAuthトークンを取得します。
POST https://login.cf.us10.hana.ondemand.com/oauth/token
Content-Type: application/x-www-form-urlencoded
Accept: application/json
Authorization: Basic Y2Y6
grant_type=password
&password=<SAP BTP password>
&username=<SAP BTP username>
Postmanで試してみます:
リクエストタイプをPOSTに設定の上、URLはログインエンドポイントにします。
Headerには Content-Type, AcceptとAuthorizationを入力し、Bodyにはusername、passwordとgrant_typeを入力してから送ります。1200秒間有効なOAuthトークン access_token が返されます。
データベース起動リクエスト
次は、取得したアクセストークンで認証を行い、データベースの起動をリクエストします。
リクエストタイプをPATCHに設定の上、URLはservices_instancesエンドポイントにします。
URLの末尾に管理対象のHANA CloudインスタンスIDを入力します。
取得したaccess_tokenをHeaderに追加します。
Bodyには下記のJSONを入力するとHANA Cloudの起動を求めます:
PATCH https://api.cf.us10.hana.ondemand.com/v3/service_instances/<service_instance_guid>
Authorization: Bearer <your_access_token>
Content-Type: application/json
{
"parameters": {
"data": {
"serviceStopped": false
}
}
}
Statusが202: Acceptedの場合はBTPが正常にリクエストを受け付けています。
Statusが4xxの場合は認証エラーです:トークンが正しくない、もしくは有効期限が過ぎています。
リクエストの中身を”serviceStopped”: trueに変えるとHANAデータベースが停止します。
iOS ShortcutsでBTPを呼び出す
Postmanで試したHTTPリクエストと同様に、iPadからBTPと通信します。Postmanで動作できていればiPadでもできます!画面の構成が異なりますので、順を追って説明します。
iPadでShortcuts アプリを開いて、新規のショートカットを作成します。
「Start HANA Cloud」ショートカットの完成形です:
- BTPに対して認証を行う
- HANA Cloudデータベースを起動させる
- 「Starting HANA Cloud」を読み上げる
認証
右のメニューからURLをショートカットに追加します。
SAP BTP Cockpitで確認したログインEndpointをURLに記入します。
Get contents of URL をショートカットに追加します。
MethodをPOSTに設定の上、Headersには Content-Type, AcceptとAuthorizationを入力し、Bodyにはusername、passwordとgrant_typeを入力します。
取得したアクセストークンを記録します。
Get dictionary value をショートカットに追加し、変数をaccess_tokenにします。
データベース起動リクエスト
次は、取得したアクセストークンで認証を行い、データベースの起動をリクエストします。
右のメニューからURLをショートカットに追加します。
SAP BTP Cockpitで確認したservices_instancesエンドポイントをURLに記入します。
URLの末尾に管理対象のHANA CloudインスタンスIDを記入します。
Text をショートカットに追加し、下記のJSONを入力します。
{"parameters": {"data": {"serviceStopped": false}}}
Get contents of URL をショートカットに追加します。
MethodをPATCHに設定の上、Headersには Content-Type, Authorization(Bearer + Dictionary value変数)を入力し、Request BodyにはFileをクリックし、先ほど定義したTextを選択します。
最後に、Siriがユーザーに返す言葉を定義します。
Textをショートカットに追加し、返したい言葉を入力します:例ではStarting HANA Cloud。
Speak text をショートカットに追加しますとSiriが実行時に読み上げます。
以上でショートカットの設定が完了です。
Siriでショートカットを呼び出すと、HANA Cloudが起動します!iPadの画面録画:
更にHANA Cloud APIを活用する
今回は決め打ちで “serviceStopped”:falseと設定しましたので、起動しかできません。
“HANAを起動”と言うときには“serviceStopped”:false、”HANAを停止”と言うときには“serviceStopped”:trueと設定すれば、応用が利きます。
HANA Cloudの起動停止以外に、APIを通してデータベースを監視することもできます!
データベースのメトリック(メモリーやCPU使用率など)とアラートをAPIで取得することが可能です。
例えば「Siri、HANAデータベースに問題ないか?」と聞いたら直近のアラートを教えてもらえます!
また、データベースにアラートが発生した瞬間にメールで通知することもできます。
最後まで読んでいただきありがとうございます。
本ブログの英語版:Start your SAP HANA Cloud Trial instance with an iOS shortcut