ローカルでの開発手順(前記事)はこちら
(この記事の解説は、前記事でサービス等作成済みな事を前提としています)
Azure 環境の RAG システム構築 ローカル開発手順~デプロイ①
https://qiita.com/KUROMAGOORO/items/f79b6f4c43756f97f02d
概要
- Azure 環境でのアプリ開発~デプロイの流れをまとめました(②ではウェブアプリのデプロイについて)
- 各サービスと接続する事を優先したので「①情報取得」でデータをいろいろな所から集めたり、「③生成結果保存」が複数発生します
- 実施には偉い権限(所有者以上)が必要です
- Azure環境での接続例
追加サービスのデプロイ(Webアプリ関連)
- ①から追加で以下のサービスをデプロイします
AppServiceプラン
仮想ネットワーク
- Japan West で追加します
AppServiceプランが Japan East に作成出来なかったので追加で作成しましたが、既に「AppService プラン」と「仮想ネットワーク」のリージョンが揃っていたら不要です
-
「Azure OpenAI」「ストレージアカウント」の各ネットワーク設定から、Japan West の仮想ネットワークに属させます
-
「委任先」があるサブネットにはプライベートエンドを作成出来ないため、プライベートエンド用に新しくサブネットを作成します
名前だけ入力して他はデフォルトです
Webアプリ
ネットワーク設定
-
仮想ネットワーク統合で仮想ネットワークを選択します
ローカル git 設定
システムマネージド ID 設定
- 今回
DefaultAzureCredential()
を使用しているので、Web アプリサービスに権限を付与しておく必要があります - この認証方法を使用した場合「キー」を必要とせず、IAM の認証によってアクセス出来る事が利点かと思います
- ローカル確認時には動作確認前に az login をして、実行ユーザのアカウントで認証を行っていました
https://qiita.com/KUROMAGOORO/items/f79b6f4c43756f97f02d#%E3%82%A2%E3%83%97%E3%83%AA%E6%A7%8B%E7%AF%89
- 「ストレージBLOBデータ共同作成者」「Cognitive Services OpenAI User」を付与します
- それぞれのサービスで web アプリにロールが付与されている事を確認します
プライベートエンドポイントの作成
- 仮想ネットワーク内に「プライベートエンドポイント」を作成して、仮想ネットワークに属す事が出来ないサービスへの接続を可能な状態にします
AISerach
Azure Database for MySQL Flexible Server
資材の作成
ローカル git から clone
-
作成された git URL をコピーして clone します
-
空のフォルダが作成されるので、「webapp」フォルダを作成します
azd init による初期化
-
azd init で初期化をします
azd init のテンプレートファイルを更新
- azure.yaml を編集します
- webアプリ作成時の「タグ」名に合わせて「webapp-rrr3」にします
- コンテナアプリではないので「appservice」にします
azure.yaml
# yaml-language-server: $schema=https://raw.githubusercontent.com/Azure/azure-dev/main/schemas/v1.0/azure.yaml.json
name: webapp-rrr3
metadata:
template: azd-init@1.9.3
services:
- webapp:
+ webapp-rrr3:
project: webapp
- host: containerapp
+ host: appservice
language: python
アプリをwebアプリ向けに更新
- webapp/start.sh の作成
start.sh
#!/bin/sh
# TZ の変更
cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtaime
echo '仮想環境の作成'
python -m venv venv
echo 'ライブラリのインストール'
./venv/bin/python -m pip install -r requirements.txt
echo 'アプリの実行'
./venv/bin/python app.py
- webapp/app.py を更新
-
demo.launch(server_port=8000, server_name='0.0.0.0')
に更新する
-
webアプリサービス の更新
- 「構成」→「全般設定」の「スタートアップコマンド」に以下のコマンドを登録する
start.sh
デプロイ
-
azd auth login を実行します
-
azd provision を実行します
-
azd deploy を実行します
- 完了まで時間がかかります