📕
Azure FunctionsでURLのルーティングを行う(Python編)
はじめに
Azure FunctionsでURLのルーティングを行う方法を確認しましたので、記事にしました。
概要
コードを書くだけでURLでのルーティングができます。
以前、AWSのLambdaで行う方法を記事にしました。Lambdaの場合はAWS Lambda Powertools
をインポートする必要がありました。
Azure Functionsでは何もインポートせず対応可能です。
やってみた
準備
まず、Azure Functionsを作成します。なぜかAzure Portalから作れなかったので、以下を参考にAzure CloudShellから作ります。
リージョンは東日本、ランタイムがPython 3.11で作成するようにしています。
let "randomIdentifier=$RANDOM*$RANDOM"
location="japaneast"
resourceGroup="msdocs-azure-functions-rg-$randomIdentifier"
tag="create-function-app-consumption"
storage="msdocsaccount$randomIdentifier"
functionApp="msdocs-serverless-function-$randomIdentifier"
skuStorage="Standard_LRS"
functionsVersion="4"
# Create a resource group
echo "Creating $resourceGroup in "$location"..."
az group create --name $resourceGroup --location "$location" --tags $tag
# Create an Azure storage account in the resource group.
echo "Creating $storage"
az storage account create --name $storage --location "$location" --resource-group $resourceGroup --sku $skuStorage
# Create a serverless function app in the resource group.
echo "Creating $functionApp"
az functionapp create --name $functionApp --storage-account $storage --consumption-plan-location "$location" --resource-group $resourceGroup --functions-version $functionsVersion --runtime python --runtime-version 3.11 --os-type linux
コード作成・修正
ポータルからコードを作成します。
HTTP triggerのテンプレートで作成します。
以下の画面で 最新の情報に更新 でコードを表示させます。
以下を参考にコードを修正します。
6行目に以下を追加して保存します。
@app.route(route="products/{category:alpha}/{id:int?}")
def main(req: func.HttpRequest) -> func.HttpResponse:
category = req.route_params.get('category')
id = req.route_params.get('id')
message = f"Category: {category}, ID: {id}"
return func.HttpResponse(message)
実行
関数のURLを取得、からURLを取得します。
URLの一部を.azurewebsites.net/api/products/hogehoge/1124?code=
のように修正します。
修正したURLでアクセスします。
おわりに
今回はAzure FunctionsでURLルーティングをする方法を記事にしました。
AWS Lambdaと違って標準でできる点に、両者の考え方の違いが見えて興味深いです。
この記事がどなたかのお役に立ちましたら幸いです。
Discussion