😎

Azure OpenAIアプリをazdでデプロイする際に詰まったところ

2023/05/25に公開

はじめに

先日技術書店14で購入した「Azure Mix Book」の1章にて、Azure OpenAIを用いたデモアプリをazdでデプロイする解説があるのですが、私がデプロイに至るまでに生じたエラーの解決方法を備忘録として残します。(本書の本質的な内容に触れないよう気をつけます)
※前提としてAzure OpenAI Serviceの利用申請が通っているものとします。

環境

・Windows10
・WSL2(Ubuntu 22.04.1 LTS)
・azd version 1.0.0 (commit ed2244cb62e7940ec5aceb3b68ea49158272dd7e)
・Python 3.10.6
・node v18.16.0

azd upした際ERROR: deployment failed:となる

$ azd init -t azure-search-openai-demo
を実行した後
$ azd up
でデプロイを実行すると

ERROR: deployment failed: failing invoking action 'provision', error deploying infrastructure: deploying to subscription:

Deployment Error Details:
InvalidTemplateDeployment: The template deployment 'openai' is not valid according to the validation procedure. The tracking id is '{tracking id}'. See inner errors for details.
SpecialFeatureOrQuotaIdRequired: The subscription does not have QuotaId/Feature required by SKU 'S0' from kind 'OpenAI' .

TraceID: {tracking id}

というエラーが発生しました。
Azure OpenAIリソースの作成に失敗してしまいます。

解決方法

$ azd up
を実行した後に設定したリージョン設定に問題があったようです。
(US) South Central US(southcentralus)

EastUS
リージョン設定を上記のように変更することで解決しました。
2023/05/25(現在)では、(US) South Central US(southcentralus) 、EastUS2をリージョンに設定するとエラーが起きることを確認しました。

azd upした際にERROR: failed running post hooks:となる

$ azd up
を実行すると

Creating python virtual environment "scripts/.venv"
./scripts/prepdocs.sh: 15: python: not found
Installing dependencies from "requirements.txt" into virtual environment
./scripts/prepdocs.sh: 18: ./scripts/.venv/bin/python: not found
Running "prepdocs.py"
./scripts/prepdocs.sh: 21: ./scripts/.venv/bin/python: not found

ERROR: failed running post hooks: 'postprovision' hook failed with exit code: '127', Path: './scripts/prepdocs.sh'. : exit code: 127

というエラーが発生しました。

解決方法

$ apt install python3.10-venv
を実行した後
/azure-search-openai-demo/scripts/prepdocs.sh
を以下のように修正します。

 #!/bin/sh

echo ""
echo "Loading azd .env file from current environment"
echo ""

while IFS='=' read -r key value; do
    value=$(echo "$value" | sed 's/^"//' | sed 's/"$//')
    export "$key=$value"
done <<EOF
$(azd env get-values)
EOF

echo 'Creating python virtual environment "scripts/.venv"'
python3 -m venv scripts/.venv

echo 'Installing dependencies from "requirements.txt" into virtual environment'
./scripts/.venv/bin/python -m pip install -r scripts/requirements.txt

echo 'Running "prepdocs.py"'
./scripts/.venv/bin/python ./scripts/prepdocs.py './data/*' --storageaccount "$AZURE_STORAGE_ACCOUNT" --container "$AZURE_STORAGE_CONTAINER" --searchservice "$AZURE_SEARCH_SERVICE" --index "$AZURE_SEARCH_INDEX" --formrecognizerservice "$AZURE_FORMRECOGNIZER_SERVICE" --tenantid "$AZURE_TENANT_ID" -v

(pythonコマンドでpython3を実行できるようにエイリアスを設定すればよかっただけかもしれません)
修正し、再度$ azd upを行うと無事デプロイが成功しました。

おわりに

Azure初心者なので色々てこずってしまいました。
まだ1章の途中ですが、デプロイの手軽さに驚いています。
これからどんどん「Azure Mix Book」を読み進めて理解を深めていきたいですね。
私と同じようなエラーで悩んでいる方の一助になれば幸いです。

「Azure Mix Book」は下記リンクから電子版を購入できます。
https://techbookfest.org/product/wgZJASDjMznuWLndpV3dc0?productVariantID=qP0rvvKVd1LqZs3V7D7LZB

Discussion