Azure WebAppで認証付きのFlaskアプリをデプロイする

作りたいもの

KintoneとかSansanやらの導入でWebAPI経由でデータを整理して表示する的なウェブアプリ(ウェブページ)が欲しくなることが増えてきました。

まずはMicrosoftのアカウントなどを利用してAzure上でアプリを限定公開する仕組みのお勉強。

実施事項 お品書き

Azureでウェブアプリを作ったことないので、そこから体験。

  1. WebAPPのチュートリアルに従いFlaskアプリのデプロイ
  2. WebAPPに認証の仕組みを導入

こんなフォルダ構成で進めようと思います

webapptest
├─env (pythonのvirtual env)
└─python-docs-hello-world (デプロイするウェブアプリ)

環境情報

ローカルでFlask

まずはFlaskアプリをちょいちょいと起動して確認。

mkdir webapptest
cd .\webapptest\
git clone https://github.com/Azure-Samples/python-docs-hello-world
python -m venv env
.\env\Script\activate
pip install -r .\python-docs-hello-world\requirements.txt
Set-Item Env:FLASK_APP ".\python-docs-hello-world\application.py"
flask run

これで、localhost:5000に、"Hello World"が出るはず。 Ctrl+Cでサーバを止めます。

Azure WebAppのデプロイ

動作確認したアプリをazure側に…. 東日本にアプリ立てます。

az webapp upはリソースグループからサービスプラン、アプリ環境立ち上げ、deployするファイルのzip化とDeployまで1コマンドでやってくれます。

アップロードされたものの中身はサーバ側の"site\wwwroot"にそのまま展開されます。azure portalでほって行くとsshが用意されているので、それを使って確認できます。

 cd .\python-docs-hello-world\
az login
az group create -n devtest -l japaneast
az webapp up -n pid123 -l japaneast -p webappfree -g devtest --sku free

これでhttp://<app-name>.azurewebsites.net にデプロイされているはず(ここではpid123が<app-name>)

ちなみに…

az webapp upにwebappのテナント作るまでを手でやるとしたら下記相当なんですが、powershellだと"python|3.6"の|が何故かパイプと認識されるみたいで""""とするなどカッコをカッコで囲う必要があります。

az appservice plan create -g devtest -n webappfree -l japaneast --sku FREE
az webapp create -g devtest -n pid123 -p webappfree -r '"python|3.6"'

zipでアップロードしてデプロイする場合は、アップロードする内容をdeploy.zipに固めて…下記っぽい。未だうまく行っていないので原因究明中。

az webapp deployment source config-zip -g devtest -n pid123 --src deploy.zip

認証の設定

Azure-Portalでwebappのページへ行きます。設定ページでAuthentificationの項目へ飛び、認証を有効にすると設定できます。

アカウント毎にアクセス制御をしたい場合は、Azure Active Directoryを選択し、許可のルールを設定するみたいです。

参考文献

No comments:

Post a Comment