Skip to Content
Product Information
Author's profile photo Maxime Simon

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」ショートカットの完成形です:

  1. BTPに対して認証を行う
  2. HANA Cloudデータベースを起動させる
  3. 「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

Maxime SIMON

Assigned Tags

      Be the first to leave a comment
      You must be Logged on to comment or reply to a post.