API ManagementにAzure Functionsを連携してみた

こんにちは、サイオステクノロジーの萩原です。
API GatewayとFunctionsの連携は武井さんの記事でも取り上げられているので二番煎じではありますが、
自分の備忘録も兼ねて、Azure API ManagementとAzure Function (HTTP Trigger) との連携部分に焦点を当ててお話したいと思います。
今回は複雑な認証についてはおいといて、シンプルにAzure API ManagementのAPIで設定したURIを叩いてAzure Functionsを実行する方法を紹介します。
そもそもAPI Managementって何?と思っている方は武井さんの記事に分かりやすい説明があるのでそちらをご覧ください。
この記事を見てAPI Managementが怖いと感じる人が少しでも減ってくれれば幸いです。

手順

設定手順を紹介します。

1. API Managementの作成

AzureのWebコンソール画面にてAPI Managementを作成します。

API Management作成画面

2. Azure Functionsの作成

続いてAzure Functionsを作成します。
今回はAzureのWebコンソール上で関数の追加や編集を行いたかったので言語はNode.js、OSはWindowsを選択しました。

Azure Functions作成画面2

作成完了後、Azure Functionsのページに移動し、左メニューの「関数」より関数の追加を行います。
HTTPリスエストを受け取った時に関数を実行してほしいので、テンプレートはHTTP triggerを選択します。

関数作成画面
HTTP trigger選択後に関数名と認可レベルを設定します。

名前 説明
anonymous APIキーは特に必要ありません。
function 関数固有のAPIキーが必要になります。 何も指定されなかった場合はこれが既定値になります。
admin マスターキーが必要になります。

認可レベルの詳細については公式ドキュメントをご確認ください。

今回はFunctionを選択します。

関数作成画面2
作成した関数は 関数 > コードとテスト > テストと実行でテスト実行が可能です。
外部から関数を実行する場合は上記画面「関数のURLの取得」を選択すると関数実行に必要なURIを確認できます。

Functionテスト実行画面

3. API ManagementとAzure Functionsの連携

続いてAPI ManagementとAzure Functionsの連携の設定を行います。
先ほど作成したAPI ManagementのAPIページのAdd APIよりFunction Appを選択します。

API Management設定画面1
先ほど作成したAzure Functionsの関数を選択してcteateボタンを押します。
API Management設定画面2

たったこれだけでAPI ManagementとAzure Functionsの連携は完了です。
とても簡単ですね。

4. API ManagementのAPIを実行

API Mamagementの実行確認は、先ほど作成したAPIのTestページで行えます。

API Managementテスト実行画面

外部からAPIを実行する場合は、同ページのHTTP request項目のURIを叩きます。
初期設定では必ずheaderかクエリにAPIのサブスクリプションキーを指定しないと実行できません。
headerの場合は「Ocp-Apim-Subscription-Key」、queryの場合は「subscription-key」というkeyでサブスクリプションキーを指定しましょう。
サブスクリプションキーのvalueはAPI Managementのページの左メニュー「サブスクリプション」にて確認ができます。

サブスクリプションキーの入力を廃止したり、headerやqueryで指定するkeyの名前を変更したい場合はAPIのSettingsページで変更が可能です。

API Management設定画面3

まとめ

API Managementはとっつきにくいイメージがありましたが、
Azure Functionsとの連携はとても簡単に設定することができました。
API Managementは怖くないことを知ってもらえれば幸いです。

ご覧いただきありがとうございました。

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

1人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です