概要
(自分用メモ)
ローカルPCで作成したFunctionAppプロジェクトをデプロイ
環境
- Ubuntu 20.04
- Node.js v20.18.1 / npm 10.8.2
- Azure CLI 2.67.0
- Azure Portalのアカウント
ローカルPC上でAzure Portalにログイン済(az login
)
Azure Portal上にリソース準備
RESGR=rg1
LOCATION=westus
FUNCAPP=fa230102
STORAGE=s$FUNCAPP
az group create -n $RESGR --location $LOCATION # リソースグループ作成
az storage account create -n $STORAGE -g $RESGR -l $LOCATION # Functions用ストレージ作成
az functionapp create -n $FUNCAPP -c $LOCATION -g $RESGR --storage-account $STORAGE --os-type Linux --functions-version 4 --runtime node --runtime-version 20 # FunctionAppリソース作成
- APIはURL(上記の場合 https://$FUNCAPP.azurewebsites.net)に生成される。
- 指定しなければ
consumption plan
(従量課金)
WebでAzure Portalにログインしリソースが作成されていることを確認。
ローカルプロジェクト作成
func init . --worker-runtime node --language typescript
func new --template "Http Trigger" --name func1
サンプルコードsrc/functions/func1.ts
が用意される。
local.settings.json
は公開ダメ(.gitignoreの設定によってコミットされない)
ビルド
npm i
npx tsc
node_modules/*
dist/index.js
ローカルテスト
func start -p 7071
※: Azure Functions Emulatorでは 使えるnode.jsのバージョンが限定されるので注意。
ここでは 'v20.18.1' を使用。
ブラウザでhttp://localhost:7071/api/func1?name=Shokkaa
を開き、Hello, Shokkaa!
と応答あればOK.
クラウドにデプロイ
- AzureWebJobsStorage: Function用ストレージへの接続キー
az storage account keys list --resource-group $RESGR --account-name $STORAGE
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "node",
"AzureWebJobsStorage": "6yoM....=="
}
}
func azure functionapp publish $FUNCAPP --publish-local-settings -y
wget -q -O - https://$FUNCAPP.azurewebsites.net/api/func1?name=Shokkaa
# Hello, Shokkaa! 表示されればOK
[参考]スクリプト
VSCode の Azure Tools pluginを使用する場合
FunctionAppプロジェクトをローカルPCに作成
[Plugin]➔[Azure]➔[WORKSPACE]➔[+]➔[Create HTTP Function...]
➔[Select Language:] TypScript
➔[Create New HTTP Trigger:] (例)func1
api/func1以下に関数本体(index.ts)等が作成される
ローカルテスト
- F5押下しデバッグ実行
- ブラウザで
http://localhost:7071/api/httpTriggerTest?name=abc
開く
クラウドにデプロイ
事前にAzure PortalでFunctionAppを作成しておく(参照)
[Plugin]➔[Azure]➔[WORKSPACE]➔[Deploy to Function App...] FunctionsAppを選択
Azure PortalでアクセスURL取得(参照)
参照