0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

簡単なタスクをAzure static web appsに載せてみる(HTML,C#)

Posted at

前提

C#で書いた(ほぼ)スクリプトを特定の人がオンラインでできるようにWeb化したい。
ひとまず簡単にAzure FunctionとHTMLがあればいいか、と思ったらAzureにちょうどいいサービスができていたので、
それを使って構築してみる。

Static Web Apps

https://docs.microsoft.com/ja-jp/azure/static-web-apps/overview
まずはこのへん見ましょう。
フロントエンドはJSとかシンプルなHTMLとか、バックAPIはFunction使われる。
ただしリポジトリはGithub限定で個人的にちょっと不便(Azureのレポはあかんのかい…)

シンプルページをクローン

https://github.com/staticwebdev/vanilla-basic
このあたりからcloneする。
ただこのままだとルーティングがないので、routes.jsonを作成する必要がある。

ルート定義(routes.json)

https://docs.microsoft.com/ja-jp/azure/static-web-apps/routes
このへんなんだが、シンプルHTMLだと一覧に入ってなかったり。

https://docs.microsoft.com/ja-jp/azure/static-web-apps/front-end-frameworks
この一覧参照

シンプルHTMLならルートフォルダにそのまま入れる。

routes.jsonの書き方は

routes 配列に出現する順序で実行されます。

これを読んでないとマニュアルのスニペットをそのまま貼っつけてハマった。。

routes.json
{
  "routes": [
    {
      "route": "/profile",
      "allowedRoles": ["authenticated"]
    },
    {
      "route": "/admin/*",
      "allowedRoles": ["administrator"]
    }
  ]
}

↑ちゃんと書くといわゆるこういう感じになる。(一要素だけ書いちゃってて動かなかった)

認証つける

特定の人だけに見せるページなら別途roleを割り当てる。
authenticatedのロールだとどんなアカウントでもひとまずログインした状態であれば見えてしまうので、
ちゃんとロール管理→招待、から対象のメールアドレスを入力しておく。(割り当てるroleはadminなどにすればいいかな)
※ここでロールのことが出てくる、routes.jsonや認証の説明だけ読んでもわからんかった…

APIを追加する

https://docs.microsoft.com/ja-jp/azure/static-web-apps/add-api
大体ドキュメントの通りなんだが、例ではnodeでC#だとどうするのかわかりにくい。
C#はいらない子?
(というかVSCodeの操作前提ってなんだよ…ともなった)

けどちゃんとできるので、くじけずにやる。

APIフォルダにAzureFunction追加

apiフォルダを作成して、AzureFunctionプロジェクトをそこに作成する。(VSでもRiderでも大丈夫)
そいでAPIのコード書く(もちろんなんでもOK)
で、ちゃんと動くことを確認しておく。

ただ、このままだとfunction.jsonがない。
自分で作るの?けど例も無いのにどうやって??
と思ったら、AzureFunctionの方のドキュメントに
https://docs.microsoft.com/ja-jp/visualstudio/mac/azure-functions-lab?view=vsmac-2019#exercise-4-working-with-functionjson
とあった。どうやらビルドした時に作成されているようだ。
それをルートの場所に持ってこよう。

Github Actionは動くがビルドされない

これがまぁ困った。
最初はcsファイルと各jsonファイルしかコミットしてなかったが、それだとビルドができないらしい。
全然API動かん…と思ってgithubActionのログをみたら(詳細にログ見れます。動かないときは要チェック)
Error: Could not detect the language from repo.
と出ていて、ビルドも何もできていない様子だった。
https://docs.microsoft.com/ja-jp/azure/app-service/deploy-local-git
このへん見て解決。
ASP.NET Core : *.sln または *.csproj
という様に、csprojファイルも追加するとちゃんとビルドできた。

所感

簡単にAPI付きのWebページを作れるのは便利。
認証もつけられるし。(BASIC認証もパッとできれば尚良)
ただAzure全体に言えることなんだが、ドキュメントがちょっとかゆいところに手が届かない感あり。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?