学生AzureアカウントでAzure SQL Database利用する時に躓いた所
やろうとしたこと
Static web app内包Functionsを使用して、Azure SQL Databaseに接続する実装をしました。
その際にAzureAD認証を利用してDBへ接続を行っていたのですが、デプロイ先の環境でエラーが発生して、何となく無理っぽそうな香りがしたので諦めです。備忘録です。
環境
- Azure Static Web App
- Azure Functions V4 (Node16・swa内包)
- Azure アカウント(hogehoge@edu.cc.hoge-u.ac.jp)
詳しく
やったこと
Azure Static Web Appsの設定画面から、接続文字列SqlConnectionString
を設定しました。
ローカルでは、しっかりDBに接続できていました。
エラー内容
その後デプロイして、StaticWebAppのデプロイ先URLを参照すると、DB全件取得のFunctionsから500エラーが発生していました。
AppInsightsExtensionからエラーを詳しく調べると、SWAの環境変数として、接続文字列のほかに、AZURE_TENANT_ID
とAZURE_CLIENT_ID
,AZURE_CLIENT_SECRET
を追加で設定する必要があることがわかりました。
結局できなかったこと
AZURE_TENANT_ID
は取得できたのですが、AZURE_CLIENT_ID
とAZURE_CLIENT_SECRET
を取得するには、所属している大学用アカウントのAzure ADの権限が必要であることがわかりました。
私は、大学用アカウントのAzure ADの権限を持っていないため、AZURE_CLIENT_ID
、AZURE_CLIENT_SECRET
を取得することができませんでした。
Azure Active Directory(Microsoft Entra ID)にアクセスしようとするとこうなる。
解決策
結局SQL認証を使用してDBと接続するしかないです。
SQL認証でやり直し、接続文字列をSQL認証のものに更新すると、無事上手くいきました。
ここで注意なのですが、SQL認証の接続文字列には、パスワードを含める必要があるので、見落とさないようにしてください。
まとめ
大学用アカウントのAzure ADの権限が無いため、デプロイ先の環境ではAzure AD認証を利用したDB接続は行えませんでした。
Azure ADのリソース作成時点でAzure AD認証が利用でき、ローカルデバッグの際には認証が通っていたのが何とも言えないですね。
Azure AD(Entra ID)、まだまだ分からないことだらけなので、もう少し勉強したいですね。
参考資料
Discussion