https://qiita.com/forest1/items/9b7ccbd8fb2a0db6363a
https://zenn.dev/sakojun/articles/20210529-azure-functions
Consumption plan -> 関数の実行中にのみ課金されます。既定のホスティング プランです。
Premium plan
Dedicated plan -> App Service plan内で実行
前提
OS : macOS Monterey 12.6
Python : Python 3.8.1
Azure Functions Core Tools : 4.0.4895
-- 1. 前作業
az login --use-device-code
az account show
az version
az configure --list-defaults
az configure --defaults location=japaneast
az configure --list-defaults
az group create \
--name rg01 \
--location japaneast
az group list
-- 2. Azure Functions Core Tools のインストール
brew tap azure/functions
brew install azure-functions-core-tools@4
export FUNCTIONS_CORE_TOOLS_TELEMETRY_OPTOUT=1
. ~/.bash_profile
-- 3. 前提条件のチェック
func --version
az --version
python3 --version
-- 4. 仮想環境を作成してアクティブにする
mkdir test
cd test
python3 -m venv .venv
source .venv/bin/activate
-- 5. ローカル関数プロジェクトを作成する
func init LocalFunctionProj --python
cd LocalFunctionProj
func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
func templates list -l python
-- 6. 関数をローカルで実行する
func start
別タームから実施
curl http://localhost:7071/api/HttpExample?name=test
-- 7. 関数用の関連 Azure リソースを作成する
-- 7.1 汎用ストレージ アカウントを作成
az storage account create \
--resource-group rg01 \
--name st123 \
--access-tier Hot \
--kind StorageV2 \
--sku Standard_LRS
az storage account list \
--resource-group rg01
-- 7.2 関数アプリを作成
※Application Insights無効
az functionapp list-consumption-locations
az functionapp list-runtimes
az functionapp create \
--resource-group rg01 \
--consumption-plan-location japaneast \
--runtime python \
--runtime-version 3.8 \
--functions-version 4 \
--name func123 \
--os-type linux \
--storage-account st123 \
--disable-app-insights true
az functionapp list \
--resource-group rg01
az appservice plan list \
--resource-group rg01
-- 8. Azure に関数プロジェクトをデプロイする
func azure functionapp publish func123
-- 9. 動作確認
curl -k https://func123.azurewebsites.net/api/httpexample
curl -k https://func123.azurewebsites.net/api/httpexample?name=test
-- 10. クリーンアップ
cd
deactivate
rm -rf test
az group list
az group delete \
--name rg01 \
--yes