Azure Web Apps(無料)をOracle Autonomous Database(Walletなし)で使用 (2022/04/29)

Azure Web Apps(無料)をOracle Autonomous Database(Walletなし)で使用 (2022/04/29)

https://medium.com/@alex.keh/using-azure-web-apps-for-free-with-oracle-autonomous-database-without-wallets-89d3fcb7b268

投稿者:Alex Keh




昨年、Oracle Data Provider for .NET (ODP.NET) Core を使用して Azure Web App Service を作成し、Oracle Autonomous Database (ADB) に接続する方法を説明しました。そして今年の初めには、ウォレットなしでODP.NETアプリをOracle ADBに接続する方法を投稿しました。このブログ記事では、この2つのコンセプトを組み合わせて、ウォレットレスODP.NET ADB接続を使用したAzure Web Appの接続を実演しています。


開発者は、この使用例から2つのメリットを享受します。

  •     ウォレットレスODP.NET接続により、ADBとAzureアプリのセットアップとデプロイメントプロセスが簡素化されます。
  •     これらのアプリは、Azure App Service Freeサービスプランを無償で使用できます。


ウォレットがアプリ・サービス・ファイルシステムに保存されている場合、AzureはBasicサービス層以上を必要とします。ウォレットがなく、Oracle Cloud Free Tierと組み合わせると、アプリはADBとAzure Web App Serviceをエンドツーエンドですべて無料で使用できます。この組み合わせは、開発者や非生産的なシナリオに最適なソリューションです。


このブログ記事では、以前の2つの投稿と比較して、いくつかの構成の違いがあるため、このユースケースのセットアップ方法を説明します。また、Azure App Service Free サービスプランから tnsnames.ora などの Oracle クライアント設定ファイルを使用する方法についても説明します。



ウォレットなし、問題なし


まず、クライアント接続文字列のData Source属性で完全なADB接続記述子を使用して、tnsnames.oraなしでODP.NETウェブアプリへのウォレットレスADBアクセスをセットアップしてみましょう。

  1.     Visual Studio で、新しい ASP.NET Core Empty ウェブサイトプロジェクトを作成します。可能であれば、.NET 6を使用することを選択します。これから使用するサンプルコードは、ASP.NET Core 6で動作します。
  2.     ソリューションエクスプローラで、Webアプリケーションの[依存関係]を右クリックします。NuGet Gallery から .NET 6 と互換性のある ODP.NET Core (Oracle.ManagedDataAccess.Core) バージョン (バージョン 3.21.50 など) を追加します。
  3.     ソリューションエクスプローラから Program.cs ファイルを開きます。ASP.NET Core 6 で動作する私の ODP.NET サンプル コードをコピーして貼り付けます。他の.NETバージョンを使用している場合は、ASP.NET Coreバージョンの違いを考慮し、コードの修正が必要になる可能性があります。このWebアプリは、ADBインスタンスに接続し、使用しているデータベースのバージョンを取得します。このコードとSQLは、どのADBユーザーでも動作します。
  4.     ADBをウォレットなしで接続できるように設定しましょう。デフォルトでは、共有ADBはウォレットを使用する接続を要求します。私のウォレットレスODP.NET ADBブログポストでは、ウォレットなしのTLSセットアップセクションの指示に従います。とりあえず「Edit Access Control List」のステップはスキップしてください。まだ Web アプリをデプロイしていないため、許可リストにデプロイする Azure Web アプリの IP アドレスがわかりません。アプリをデプロイした後に、これらを追加します。
  5.     Program.cs に戻り、ODP.NET 接続文字列を ADB ユーザー ID、パスワード、およびデータ ソースで変更します。Data Sourceの値は、TLS接続文字列になります。mTLS接続文字列は使用しないでください。デフォルトでは、TLS接続文字列は識別名であるssl_server_cert_dnの値を引用符で囲んでいます。C#がデータソース値全体を適切に識別できるように、識別名の周りの引用符を削除するか、各引用符の前にバックスラッシュ( \ )をエスケープシーケンスとして追加してください。ファイルを保存します。


Azure Web App のデプロイ - 無料サービスプラン


次のステップでは、Web アプリを Azure App Service Free サービスプランにデプロイします。

  1.     Visual Studio から、新しい Azure Web アプリサービスを作成し、ASP.NET Core プロジェクトを公開します。Free service tier を選択します。サービスが作成されたら、Web アプリを Azure に公開します。
  2.     ここで、このアプリサービスの送信可能な IP アドレスを取得し、ADB のアドレス許可リストにデプロイします。これにより、ADB は Azure Web アプリからの接続要求を処理できるようになります。Azure Portal にアクセスし、Web アプリの管理コンソールに移動します。左側のメニューから、[プロパティ]をクリックし、[送信IPアドレス]を見つけます。右側の「Copy to Clipboard」ボタンをクリックして、すべての IP アドレスをコピーします。



これらのアドレスは、あなたのサービスがADBに接続するために使用することができるすべてのものです。これらを、ADBへのアクセスを許可するIPのリストに追加していきます。


3. ADB-Sインスタンスを管理するOracle Cloudコンソール・ページに戻ります。Networkセクションで、Access Control List行の[Edit]リンクをクリックします。


4. [IP Address]のIP表記タイプを選択します。AzureアプリサービスのIPアドレスを「Values」テキストボックスに貼り付けます。次に、[Save Changes]ボタンをクリックします。



これで、Azureウェブアプリケーションを自由に、そしてウォレットを持たずに実行する準備が整いました。


5. Azure ポータルに戻ります。Webアプリのメイン設定ページの上部にある「Browse」リンクをクリックします。新しいブラウザウィンドウが開き、Azureウェブアプリに接続し、Oracle ADBに接続して、データベースのバージョン情報を取得します。ブラウザに以下のような結果が表示されるはずです。




Oracleクライアント設定ファイルのデプロイ


ウォレットと、tnsnames.ora や sqlnet.ora などの Oracle クライアント構成ファイルなしで、動作する Azure ADB アプリを作成する方法を紹介しました。.NET開発者は、Oracleの構成設定を.NET構成ファイルまたはコードファイルに含めることがよくあります。そうでない場合は、無料プランのまま、Oracleクライアント設定ファイルをAzureにデプロイし続けることができる。先ほどデプロイしたアプリを修正しながら、その方法を説明します。


1.    tnsnames.ora という名前で新しいテキスト ファイルを作成します。このファイルには、ネットサービス名「myADB」の後に等号(=)を付けて編集します。Program.cs ファイルから、データソース属性に設定した接続ディスクリプタをコピーして貼り付けます。ファイルを保存します。これで、このファイルの冒頭は、次のようになります。



“myADB = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1521)…”


2. Visual StudioでASP.NET Coreプロジェクトに戻り、Solution Explorerを開きます。新しいプロジェクトフォルダを作成し、名前を付けます(例:「Oracle」)。このディレクトリに、Azure Web アプリにデプロイされる Oracle クライアント設定ファイルを格納します。


3. ディレクトリを右クリックします。追加 → 既存の項目を選択します。新しく作成された tnsnames.ora が存在するディレクトリに移動します。プロジェクトディレクトリにインクルードするファイルを選択します。


4. Program.csを開き、接続文字列Data Sourceの値を、接続記述子の代わりにこの新しいADBネットサービス名(例:myADB)を使用するように変更します。


5. その下のODP.NET TnsAdminプロパティのコメントを解除します。その値を、Azure上のOracleクライアント設定ファイルが配置されるディレクトリに設定します。以下の例では、tnsnames.oraは、Webサイトのルートディレクトリから「Oracle」サブディレクトリにデプロイされます。ファイルを保存します。


// C#
OracleConfiguration.TnsAdmin = $".{Path.DirectorySeparatorChar}Oracle";


6. プロジェクトの公開ページに移動し、更新されたアプリを再公開します。


7. Visual Studio はデフォルトで新しいサブディレクトリを公開しないので、ソリューションエクスプローラからこのディレクトリを右クリックして、「Publish <Directory Name>」を選択することで手動でデプロイすることができます。



これで、ディレクトリとtnsnames.oraが手動でデプロイされます。


8. これで、Azure ウェブアプリは、Oracle クライアント構成ファイルを使用して、自由に、ウォレットレスで実行できるようになりました。Azureポータルに戻り、メイン構成ページの [Browse]リンクをクリックします。新しいブラウザウィンドウが開き、AzureウェブアプリとADBに接続し、データベースのバージョン情報を取得します。



Oracle ADB with Azure Webアプリケーションを、Oracleクライアント構成ファイルの有無にかかわらず、無料で開発する方法をご理解いただけました。

Oracle Cloud Free Tierで今すぐ始める


Oracle Cloud Free Tierにサインアップすることで、Oracle ADBを使用してこのチュートリアルを無料で試すことができます。


コメント

このブログの人気の投稿

Oracle RACによるメンテナンスのためのドレインとアプリケーション・コンティニュイティの仕組み (2023/11/01)

Oracle Cloud Infrastructure Secure Desktopsを発表: デスクトップ仮想化のためのOracleのクラウドネイティブ・サービス (2023/06/28)

Oracle Cloudのデータベースをオブジェクト・ストレージにバックアップする3つの方法 (2021/12/13)