(自分用メモ)
AzureのAPI Managementを試す
APIM(API Management)はAzureの各種リソースのエンドポイント(HTTPサービス)のセキュリティをまとめて引き受ける。認証の検証とか。
前提
Azure Function AppでAPIをデプロイ済み。
API Managementリソース作成
Home
➔リソースの作成
➔API Management
➔作成
-
リソース名
=エンドポイント(URL)のホスト名に含まれる。Azure全体でユニーク。例:apim230707
-
価格レベル
=Consumption
(従量制)を指定。
➔作成
デプロイには多少の時間が必要。
FunctionAppでデプロイしたサービスを収容してみる
概要
➔作業の開始
➔API
➔HTTP
-
Web service URL
=Functionsで生成したURL -
API URL suffix
はとりあえず空にする
➔Create
➔Frontend
➔Add Operation
➔ 例:URL
=Get
,/
-
Subscription required
=unchecked (本来ダメ、お試しのみ)
テスト
Settings
➔Base URL
で取得したURL(例:https://apim230101.azure-api.net
)
以前作ったFunctionなら、パラメタ?name=Shokkaa
をつけて
https://apim230101.azure-api.net?name=Shokkaa
をブラウザでアクセス。
Hello, Shokkaa. This HTTP triggered function executed successfully.
みたいに帰ってくれば成功。
APIMは何もしない設定なので、直接Functionsを呼び出すのと(URLを除いて)まったく同じ。
[TODO]認証
[TODO]
CLI操作例
下記リソース作成と、設定をCLIで実行。
リソースグループ、Function App、APIインスタンス、APIM上のAPIセット、APIに対する操作
リソース名など設定
RESGR=r1003
LOCATION=westus
FUNCAPP=app1003
APIM=r1003
Azureにログインとリソース設定
az login --use-device-code
az group create -n $RESGR --location $LOCATION
az storage account create -n s$FUNCAPP -g $RESGR -l $LOCATION
az functionapp create -n $FUNCAPP -c $LOCATION -g $RESGR --storage-account s$FUNCAPP --os-type Linux --functions-version 4 --runtime node --runtime-version 18
az apim create --name $APIM -g $RESGR --publisher-name 'Shokkaa' --sku-name 'Consumption' --publisher-email 'kyoya.p@gmail.com'
FUNCURL=https://$FUNCAPP.azurewebsites.net/api/frev?param=
az apim api create --service-name $APIM -g $RESGR --api-id RevProxy --path '/' --display-name 'RevProxy' --service-url $FUNCURL
az apim api operation create --service-name $APIM -g $RESGR --api-id RevProxy --url-template '/{param1}' --method 'GET' --display-name 'Get' --description 'Descrition' --template-parameters name=param1 description='Descrition' type=string
後片付け
リソース削除お忘れなく。