SAP HANA Cloud: SAP BTP Free TrialでSAP Business Application Studioから開発プロジェクトを作成しよう（後編）

こちらの記事の続きです。

https://qiita.com/IT_Tech_Firm/items/caefff570072479c9083

前回に引き続き、こちらのTutorialを参照しています。　Tutorialでは合計15分かかると記されていますが、実際に操作しながら進めると15分では全然時間が足りません。

https://developers.sap.com/tutorials/hana-cloud-mission-trial-8.html

## user-provided serviceの作成

プロジェクトが作成され、SAP Business Application Studioの基本的な操作方法がわかったので、次のステップはuser-provided serviceを作成することです。これにより、プロジェクトがデータベース内のデータにアクセスできるようになります。

SAP HANA Projectsパネルで、プロジェクトを展開します。

カーソルをデータベース接続セクションに合わせると、プラスアイコン（add database connection）が表示されます。このオプションを使用すると、新しいデータベース接続を追加できます。アイコンをクリックします。
![スクリーンショット 2024-02-02 23.54.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1181562/10bb60e1-3192-aab0-b8d9-175449cf56d8.png)

接続タイプを選択するフィールドで、ドロップダウンメニューから「create user-provided service instance」オプションを選択します。
![スクリーンショット 2024-02-03 0.44.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1181562/79d3eb65-5a2e-41ad-0162-28d99ceea5d4.png)

サービスの名前を入力し、「ユーザーとロールと権限の管理」チュートリアルのステップ2で以前に作成した`UPS_GRANTOR`ユーザーのユーザー名とパスワードを入力します。
![スクリーンショット 2024-02-03 0.46.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1181562/cc0e959a-9749-c468-4711-0325b2517ea1.png)

「Generate hdbgrants file」チェックボックスを選択し、Addボタンをクリックします。

プロジェクトから直接多くのユーザーに一連の権限を割り当てるために、.hdbgrantsファイルを使用します。このファイルは、接続されたデータベースで入力された権限を付与するためにユーザー提供サービスが使用されることを指定します。

このステップはプロジェクトの始めに一度だけ行う必要があります。追加の権限が必要な場合にのみ、ファイルを修正する必要があります。
![スクリーンショット 2024-02-03 0.58.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1181562/dc251dd1-0443-159b-a249-94816ad1a93c.png)

user-provided serviceが作成されます。
![スクリーンショット 2024-02-03 1.00.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1181562/1525fbaf-fc19-f80c-f559-cfdc981435ca.png)

## hdbgrantsファイルの修正

ファイルエクスプローラーで、.hdbgrantsファイルを開きます。ここでは、異なるユーザーグループに付与できるすべての異なるタイプの権限のテンプレートを確認できます。オブジェクト所有者ユーザーとアプリケーションユーザーのための専用セクションがあります。
![スクリー![スクリーンショット 2024-02-03 1.11.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1181562/bcec89a6-cb53-1bc0-cb02-8197beff61f6.png)
ンショット 2024-02-03 1.07.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1181562/b2ded51f-45a6-a020-dc13-c5625b339b59.png)

このTutorialの目的のために、以前に作成したロールをオブジェクト所有者とアプリケーションユーザーに付与します。オブジェクト所有者にはロール`genericRoleForOO`が、アプリケーションユーザーにはロール`genericRoleForAP`が割り当てられます。

これを行うには、hdbgrantsファイルの内容を次のものに置き換えます：

```
{
    "MyUPS": {
        "object_owner": {
            "global_roles": [
                {
                    "roles": ["genericRoleForOO"]
                }
            ]
        },
        "application_user": {
            "global_roles": [
                {
                    "roles": ["genericRoleForAP"]
                }
            ]
        }
    }
}
```

変更前
![スクリーンショット 2024-02-03 1.11.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1181562/c08c3fb6-a1d7-0dd8-fa7e-0328d3b7e17a.png)

変更後
![スクリーンショット 2024-02-03 1.13.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1181562/84305d98-e870-67d5-0b51-9c3ebff5d858.png)

## プロジェクトのデプロイ

データベースへの接続が確立され、権限ファイルが作成されたので、プロジェクトをデプロイできます。
プロジェクト名の隣に、ロケットの形をした小さなアイコン（デプロイ）が表示されます。それをクリックしてプロジェクトをデプロイします。デプロイが成功裏に完了すると、画面の下部に完了メッセージ（Deploy ended at〜）が表示されます。が、、、エラー！（涙）
![スクリーンショット 2024-02-03 1.26.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1181562/8e550add-6b50-2a54-24ee-8ef5646d510e.png)

仕事なら原因調査するところですが、今回はTrialですので操作を進めることを優先します。
HDI containerを開きます。
![スクリーンショット 2024-02-03 1.42.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1181562/9832ddae-ad92-27e2-4a9f-d1f9b9ff5834.png)

以下のSQL文を実行し、HDIコンテナ内からSFLIGHTスキーマのテーブルにアクセスできるようになったことを確認します。
```
SELECT * FROM SFLIGHT.SAIRPORT;
```

![スクリーンショット 2024-02-03 1.42.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1181562/e495f4c4-204b-7b87-ee5f-78b045ee7d8f.png)

以上です。

SAP Business Application Studioで開発プロジェクトを設定し、user-provided service と.hdbgrantsファイルを使用してデータベースに接続する方法を学びました。これで、計算ビューを作成する準備が整いました。

## 2024年2月24日追記

プロジェクトのデプロイに失敗した理由が分かりましたので追記です。
どうやら、UPS_GRANTORの初期パスワードがExpireしてしまっていたようです。
![スクリーンショット 2024-02-23 23.48.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1181562/93ea1bc9-1150-8ced-6256-926b6f4fbabf.png)

パスワードリセットをして、
![スクリーンショット 2024-02-23 23.49.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1181562/777f60c5-ca44-17ac-b999-c695079aca11.png)

再度デプロイしたところ成功しました。（実際にはプロジェクトを作るところからやり直しています。）
![スクリーンショット 2024-02-24 0.49.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1181562/a6a5b05c-e959-9e66-20ff-61db6e16bd6b.png)