PI Management - Functions連携
目的
以下のように Blank API
や OpenAPI
からインポートして作成したAPIのBackendにFunctionsを連携させる
API Management - Functions連携について
API Management と Functions を下図のように連携する
① クライアント → API Management
https://<APIMリソース名>.azure-api.net/<API URL suffix>
は以下から確認できる
<operationパス>
は以下から確認できる
<operationパス>
はそのままFunctionsへのリクエストに付与され、Functionsのルーティング設定と整合性が取れている必要がある
②,③ API Management → Functions
https://<関数アプリ名>.azurewebsites.net/api/<operationパス>
は以下から確認できる
<operationパス>
のデフォルトは関数名(上図例は関数名がHttpTrigger1
のためURLはhttps://<関数アプリ名>.azurewebsites.net/api/HttpTrigger1
)
<operationパス>
は、関数に紐づいたfunction.json
のroute
で変更が可能
対応メソッドはmethods
で指定する(詳細はルーティング設定参照)
以下function.json
の例
{
"scriptFile": "__init__.py",
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get"
],
"route": "data1/{id:int}"
},
{
"type": "http",
"direction": "out",
"name": "$return"
}
]
}
またリクエストにはx-functions-key
ヘッダが必須、値はアプリキーを使用する
アプリキーは以下から確認できる
API Management の Backend設定
名前付きの値の定義
Functionsのアプリキーを名前付きの値として定義する
値には前述したFunctionsのアプリキー(_master
, default
または作成したアプリキーの値)を設定する
Backendの登録
以下のようにBackendを追加する
種類にAzureリソース
から該当のFunctionsを選択し、
ランタイムURL(リダイレクト先URL)はhttps://<関数アプリ名>.azurewebsites.net/api
にする(初期値としてhttps://<関数アプリ名>.azurewebsites.net
が入力されるので/api
を追加する)
証明書チェーン、証明書名の検証は☑を外す
認可資格情報としてヘッダーにx-functions-key
を追加し、値には定義した名前付きの値を使用する
APIの作成
適当なAPI、operationを作成する
APIにBackendの紐づけ
以下からInboundポリシーを編集する
以下のようにset-backend-service
ポリシーを追加する
backend-id
の値は登録したBackendの名前を設定する
<policies>
<inbound>
<base />
<set-backend-service backend-id="test-backend" /> # 追加
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
set-backend-service
ポリシーを設定することで、Backend登録時に設定した<ランタイムURL>/<operationパス>
(https://<関数アプリ名>.azurewebsites.net/api/<operationパス>
)にリダイレクトされる
テスト
結果
Functions内容
外部からのAPIコール
外部からAPIをコールする場合は、製品にAPIを追加する必要がある
Author And Source
この問題について(PI Management - Functions連携), 我々は、より多くの情報をここで見つけました https://qiita.com/takmot/items/2762d0f7b6b693c3571a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .