App Service(Azure) + Autonomous Database(Oracle Cloud) やってみよう
2019-09-30
azblob://2022/11/11/eyecatch/2019-09-30-azure-oraclecloud-using-appservice-000.jpg

こんにちは。Marketing & Salesの大野です。今回はちょっとだけTechな内容にしていきたいと思います。

先日行われたOracle OpenWorld 2019でAutonomous Database/Oracle Cloud Infrastructureを継続して無償利用できる「Always Free」サービスの提供というアナウンスがされました。
そして、Microsoft Azureとの相互接続:現在、北米東海岸とロンドン・リージョンでOCIとAzureは相互接続されていますが、世界中で加速していくとのことです。

全社の無償利用は使ってみない手はないということで、今回はOracle Cloudのアカウント作成からAutonomous Databaseの作成、AzureのApp Serviceから接続というところをクイックにやってみたいと思います。

アカウント作成や、Autonomous Databaseの説明は結構情報がすでにありますので、ライトに紹介します。

まずは、ここからアカウントの作成です。
Always Freeと30-day Free Trialができますよ~と謳っていますね。

アカウント作成とAutonomous Databaseの作成で注意・ポイントになりそうなのは3点。

  1. 本人確認のための携帯SMS送信
  2. パスワードの制約
  3. クライアント資格証明書(ウォレット)のダウンロード

1.本人確認のための携帯SMS送信
+81からの発信となりますので、頭0なくしての携帯番号で送信となりますが、なぜか私の場合docomoの携帯には何度やっても送られてきませんでした。
softbankの携帯番号に変えたらあっさり送信されて本人確認できました。
ここでかなり時間とられてしまいました。

2.パスワードの制約
9つの条件をみたしたパスワードを設定する必要があります。

3.クライアント資格証明書(ウォレット)のダウンロード
アカウント作成後に、Autonomous Databaseを作成します。Database作成後にこのDatabaseに接続するクライアントにウォレットをダウンロードする必要があります。
ここでもまたウォレットのパスワードを設定することになります。
クライアント資格証明書のZipファイル形式でダウンロードするのですが、この中にewalletとsqlnet.ora、tnsnames.oraが一緒に含まれています。

ここまでできれば、いよいよAppServiceからAutonomous Databaseへの接続してデータを表示させるアプリケーションの作成です。
アプリの目的として、Autonomous Databaseに接続してデータベースの内容が確認できれば良いので、ざっくりとした動作は以下の通りです。

  • コネクションオープン
  • “select table_name from all_tables”でテーブル一覧を取得
  • 結果セットを画面に表示

AppServiceで動作させるための作業ポイントは3つ

  1. NugetからOracle.ManagedDataAccessをインストール
  2. 接続文字列のウォレットパス編集
  3. App Serviceのアプリケーション設定を編集(これが一番のポイント)

1.NugetからOracle.ManagedDataAccessをインストール
これはASP.NET、ASP.NET Coreでもそれぞれオラクルに接続するためにManagedDataAccessをインストールします。

2.接続文字列のウォレットパス編集
接続文字列にあるSECURITYにウォレットのパスを設定します。
今回は実行ファイルと同じ場所に配置して、動作させるようにしたので、下記のように記述しています。

(SECURITY = (MY_WALLET_DIRECTORY =.))

3.App Serviceのアプリケーション設定を編集


これがApp Serviceにデプロイする上で一番のポイントになります。
アプリケーション設定に
“WEBSITE_LOAD_USER_PROFILE”を追加し
値に“1”
をセットします。
これがAzure上でOracle ウォレットを利用する設定となります。
これが入っている入っていないでoracleへの接続ができるできないが変わります。

とういわけでアプリケーションをビルドしてAzureにデプロイして動作を確認してみます。

無事テーブル一覧が表示されています。
ちゃんとApp Service上で動作していることもアドレスから確認できます。

まとめ


一番のポイントはウォレットの扱いにつきます。
ここさえおさえれば、プログラムそのものはなんら従来通りです。
Freeプランで利用できるスペックは非常に低いですが、試しに利用するには便利です。
アプリケーションレベルでの利用は確認できたので、次は、相互接続にチャレンジしてみたいと思います。