Azure App Service と MySQL in App(というかMySQL自体)が初めてだったのでメモ。
基本的なAzure App Serviceの操作は↓で確認した(チュートリアルと違ってSQL Server使ってないけど)。
Azure App Serviceチュートリアル:Azure SQL Database を使用して Azure に ASP.NET アプリをデプロイする:https://docs.microsoft.com/ja-jp/azure/app-service/app-service-web-tutorial-dotnet-sqldatabase
1.Visual Studio 2022インストール
→公式(https://visualstudio.microsoft.com/ja/vs/)からDLしてポチポチしただけなので参考サイトなし。
2.Azureアカウント作成
→公式(https://azure.microsoft.com/)でポチポチのみ。
3.ローカル用MySQLインストール(Windows)
→↓を見てポチポチ。
- MySQLインストール:https://www.javadrive.jp/mysql/install/
4.ローカル用MySQL設定
→MySQL in Appってユーザー:azure、パスワード:passwordなんか。
→じゃローカル環境も同じにしとこ。
→と思ったらパスワードポリシー設定に一手間いった。
- MySQL 8.0 で validate_password を有効化・無効化する方法:https://qiita.com/_meki/items/5f642e609ce99c1b727e
- MySQL8.0で4文字パスワードを許可:https://qiita.com/11ohina017/items/481b1fe371f1e409dec7
5.MySqlConnectorインストール
→ADO.NET何つかお(EntityFrameworkはあまり好きじゃない)
→ググったら「MySQL Connector/NET」ってあったけどライセンスがGPLか。
→「MySqlConnector」ならMITライセンスやん。こっち使お。
→Nugetポチ
- MySQL用ADO.NETでConnectorと付く物は2つある:https://qiita.com/noobow/items/cd5f776118562c66e73d
6.ローカル環境でHelloWorld
→VSポチポチで完了。
7.DBメンテナンス
→色々やってたらDB上のテストデータ増えたので一回全Deleteかけよ。
→MySQLワークベンチで1175エラー
→フールプルーフ解除コマンドが必要
- MySQLワークベンチでupdate文を実行すると1175のエラーが発生:https://yoneyore.hatenablog.com/entry/2016/01/05/200047
8.デプロイ
→色々調べたけど、結局Visual Studio 2022の発行機能(VSにAzureのアカウント紐付けとけばポチポチするだけ)が強力だったのでCLとか使わず。
9.MySQL in Appへの接続
→あれ、IDとPWはあってるはずなのに何故かMySQL in Appに繋がらん…
→ポート指定もあるので接続文字列は環境変数から取らないといけなかった。
- ASP.NET CoreでMySQLを使ってみる -Web Appsにデプロイ:https://sublimer.hatenablog.com/entry/2019/12/19/185522
10.アプリにAzureAD認証を付ける
→F1(無料)プランで使いたいから変なアクセス弾くように認証付けよう。
→Azureポータルポチポチだけで認証付けれた。
- Azure AD ログインを使用するように App Service または Azure Functions アプリを構成する:https://docs.microsoft.com/ja-jp/azure/app-service/configure-authentication-provider-aad
11.ログインユーザーのID取得
→認証できたんなら「ようこそ!XXさん」みたいなのつけてみるかと思って調べてみたらリクエストヘッダに入ってた。
→認証APIアクセス用のトークンもあるからこれで詳細も取れるのか。
→このトークンでGraph API叩いてもうまくいかん(InvalidAuthenticationToken)…。別口で取るようにするか。
App Service の Azure Active Directory 認証でユーザ情報をサーバーサイドで取得する:https://qiita.com/sunack/items/ab76956edba683e272e7
Easy Auth の Tokenで Graph APIを呼び出す:https://statemachine.hatenablog.com/entry/2018/07/06/095521
→うまくいかん。トークン解析したらちゃんと「"typ": "JWT",」ってなってるんだけどなぁ…