2
0

Azure Functions(関数アプリ)の環境構築メモ

Posted at

Azure OpenAI Serviceの活用でFunctionsを使うことになったので、いろいろ作る前にFunction作るための環境構築のメモを残す

環境

  • windwos11 pro
  • Visual Studio Code(いくつかの拡張機能含む)
  • Azure Functions Core Tools
  • Python3.11

Visual Studio Codeのインストール

上記からダウンロードしてインストールするだけ

Azure Functions Core Toolsのインストール

image.png
64ビットのほうをインストールする
image.png

Pythonのインストール

上記からPython 3.11.9 をインストールする。
他で使ってるバージョンに合わせただけなので、ぶっちゃけAzureのFunctionsが対応してるバージョンなら新しいものでも大丈夫。

インストール後、念のため再起動しておく。
※以前パスの読み込みがうまくいかないことがあったので念のため

VSCodeの拡張機能のPythonをインストールする

image.png

VSCodeの拡張機能のAzure Functionsをインストールする

image.png

VSCodeの拡張機能のAzuriteをインストールする

image.png

開発スタート

Azureポータルからリソースグループを作成する

image.png
とりあえず入れ物だけ作っておく。名前は適当に。

Azureにサインインする

image.png

プロジェクトを作成する

image.png

適当なフォルダを作って指定
image.png

Pythonを選択
image.png

モデルV2を選択
image.png

インストールしたPythonのバージョンが出てくるのでそれを選択
image.png

HTTP triggerを選択
image.png

関数の名前を適当に決める。(とりあえず、「http_trigger_simple_chat」にしておく)
image.png

認証レベルについては「FUNCTION」を選択
image.png

「Open in current windows」を選択してプロジェクトを開く
image.png

function_app.pyに初期テンプレートの関数が実装された雛形の構成が作成されるので、ここから本格的な実装をスタートする
image.png

ローカルで実行する

エミュレータの実行

F1キーとかからコマンドパレットを呼び出して「Azurite:Start」を実行する
image.png

エディタの下のほうにこんなのが出れてばOk
image.png

関数の実行

function_app.pyを開いてる状態でF5キー押して実行する
image.png

ターミナルで警告が出た場合は「R」か「A」で実行を許可する。この環境は専用に作ったVMなので、「A」で常に実行するようにする。
image.png

エラーなくいくと、ローカル実行しているFunctionsのエンドポイントが表示される。
image.png

左のアクティビティからAzureのアイコンをクリックし、ローカルのワークスペース内の関数を右クリックするとメニューが表示されるので、「Execute Function Now」をクリックして関数を実行する。
image.png

コマンドパレットが表示されるあたりに、HTTPリクエストを投げるときにくっつけて渡す要求本文にセットする値の入力が求められるので、今回はこのままEnterで確定する
image.png

関数の実行されると、VSCodeに通知が来る。「Hallo Azure・・・・」というテキストが表示されていれば成功!

あとは、この関数の中身を更新していけばOK

デバッグを止める

Ctrl+Cキーで実行中のプロセスを止める。ターミナルが戻ればOK
image.png

コマンドパレットから「Azurite:Close」でエミュレータを止める
image.png

Azureにデプロイする

関数アプリを作成する

左のAzureのアイコンをクリックしリソースの中のFunction Appを右クリックし、「Create Function App in Azure」を選択する。
image.png

関数のアプリ名を適当に入力してEnter
image.png

Python3.11を選択する
image.png

日本リージョンを選択する
image.png

うまくいけばAzureのポータルからも関数のリソースが見える

ローカルで作った関数をデプロイする

左のAzureのアイコンをクリックし、ローカルのWorkSpaceのところにあるFunctionsのアイコンをクリックするとメニューが表示されるので、「Deploy to Function App...」を選択する。
image.png

デプロイ先として先ほど作成した関数を指定する。警告が出たらDeployを選択する。
image.png

ターミナルにSuccessのテキストが出れば完了
image.png

Azure上にデプロイした関数を実行してみる

とりあえずPostmanを使ってVSCode以外から動作確認してみる

関数URLを取得する

Azureのポータルにアクセスし、デプロイした関数リソースにアクセスし、関数URLを取得する。
このとき下記の3種類表示されるはずなので、一番下の関数キーの値をコピーする

  • _master (ホスト キー)
  • default (ホスト キー)
  • default (関数キー)
    image.png

Postmanにコピーしたやつを張り付けて、Bodyのところにローカル実行したときの引数をセットして実行する

{"name":"Azure"}

応答として「Hello Azure...」とテキストが返ってきたら成功!

image.png

【おまけ】ちょっとセキュアに

今回作成した関数は、認証レベルをFunctionにしてるので、エンドポイントとなるURLだけでなく、関数キーなどのキー情報も必要にはなってるので、全く何もしない状態よりはほんのちょっとセキュアではあるんですが、会社内からのアクセスに限定したいシーンなどがあると思います。いわゆる閉域化とかいうやつですね。
仮想ネットワークをAzure上に構築してプライベートエンドポイントとかVNet統合とか「ちゃんと」やろうとするとそこそこ知識や時間やお金がかかるので、今回はお手軽に関数アプリへのアクセス元を限定する設定だけ行い、ノーガードよりはちょっとセキュアな状態にしておきます。

関数アプリのネットワークの設定を変える

作成したばかりの今の状態は公衆ネットワークアクセスが「制限なし」になってます。クリックしてこれを変更します。
image.png

公衆ネットワークのところで、「選択した仮想ネットワークとIPアドレスから有効」を選択し、サイトのアクセスルールを追加します。
例えば、キャプチャでは「10.0.0.1」とか適当なIPにしてる部分を、会社が使用しているグローバルIPとかにして規則の追加をします
image.png

追加したら保存して設定変更完了です。
これだけで指定したIP以外からの要求を受け付けなくなるのでお手軽です。
もちろんIPが変わらなければの前提なので、結局はどこまでやるか次第ですね
image.png

おわり

2
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
2
0